Текст
                    ГРАФЫ
МАТРОИДЫ
АЛГОРИТМЫ
N
ν


i;i;ic:>:M7<iji7:t Λ«Μ> Л< лнон М. О., Баранский В. Α., Расин В. В. Λ 1М) Дискретная математика: графы, матроиды, алгоритмы: Учебное пособие. 2-е изд., испр. и доп. — СПб.: Издательство «Лань», 2010. — 368 с: ил. — (Учебники для вузов. Специальная литература). ISBN 978-5-8114-1068-2 В учебном пособии изложен ряд основных разделов теории графов и матроидов. Рассмотрены алгоритмы дискретной оптимизации на сетях и графах, наиболее часто используемые программистами. Пособие предназначено для студентов и аспирантов, специализирующихся в области компьютерных наук и информационной безопасности, для практикующих программистов, для всех желающих изучить основы современной дискретной компьютерной математики. ББК22.176я73 Книга издается в авторской редакции Обложка А. Ю. ЛАПШИН Охраняется законом РФ об авторском праве. Воспроизведение всей книги или любой ее части запрещается без письменного разрешения издателя. Любые попытки нарушения закона будут преследоваться в судебном порядке. £> Издательство «Лань», 2010 (С М. О. Асанов, В. А. Баранский, В. В. Расин, 2010 (О Издательство «Лань», художественное оформление, 2010
ПРЕДИСЛОВИЕ КО ВТОРОМУ ИЗДАНИЮ Настоящее издание отличается от предыдущего отдельными изменениями в разных местах книги. Большое внимание было уделено устранению мелких погрешностей в доказательствах. Некоторые доказательства теорем были существенно упрощены авторами. Во второй части книги добавлен параграф 12.5. Мы благодарны студентам математико-механического факультета Уральского государственного университета за ряд полезных замечаний. Уральский госуниверситет М. О. Асанов г. Екатеринбург В. А. Баранский июль, 2009 В. В. Расин
ПРЕДИСЛОВИЕ К ПЕРВОМУ ИЗДАНИЮ Основой для данного учебного пособия послужили лекции, прочитанные авторами для студентов математико-меха- нического факультета Уральского государственного университета им. А. М. Горького, обучающихся по специальностям «Математика, прикладная математика», «Математика, компьютерные науки» и «Компьютерная безопасность». В книге излагается ряд разделов теории графов и приводятся алгоритмы дискретной оптимизации на графах и сетях. Материал, посвященный теории графов, содержит достаточно обширное введение в теорию матроидов. Матроиды, в частности, составляют теоретическую основу для изучения и анализа алгоритмов, использующих «жадную» стратегию. Понимание же природы и областей применимости жадных алгоритмов, безусловно, необходимо каждому специалисту по компьютерной математике и ее приложениям. Теория графов за последние десятилетия развилась в весьма обширную ветвь математики, имеющую многочисленные приложения в самых разнообразных сферах человеческой деятельности. В настоящее время практически невозможно в одном учебном пособии отразить все разделы теории графов. Подбор тем, поднятых в книге, во многом определен вкусами авторов. Нам хотелось представить основное, устоявшееся ядро современной теории графов и сопутствующее ему семейство алгоритмов дискретной оптимизации, наиболее часто используемых программистами. Мы стремились привести главные достижения, не останавливаясь на мелочах и не углубляясь в детальный обзор результатов по обсуждаемым темам. Мы стремились также привести самые лаконичные и изящные доказательства из известных нам. Часть доказательств была существенно переработана нами и некоторые из них ста-
Предисловие к первому изданию 5 ли относительно далеки от своих прототипов. Наша цель была сделать доказательства более прозрачными и не содержащими загадок для читателей. Мы советуем читателям при первом чтении книги пропустить главу 4, посвященную матроидам. Читатели же, интересующиеся в основном алгоритмами, могут приступить к чтению главы 7 и последующих глав сразу после главы 1, возвращаясь по мере необходимости к предшествующим главам. В качестве основной литературы отметим книги [3,6,25,30, 49,52,55,60]. Для удобства читателей приводится достаточно полный список литературы по рассматриваемому предмету, содержащий книги, которые были опубликованы на русском языке. Мы обращаем внимание читателей на фундаментальные книги [64-68], русских переводов которых, к сожалению, не имеется. Нами используется терминология, наиболее распространенная в математической литературе как за рубежом, так и в России. Теоремы и предложения нумеруются в книге двумя числами: первое — номер главы, а второе — порядковый номер утверждения данного типа в указанной главе. Аналогично нумеруются и алгоритмы. Заметим, что при формализованной записи алгоритмов мы старались не использовать обозначений на кириллице. В этом мы следовали сложившейся российской математической традиции написания формул с помощью латинского, греческого и других иноязычных алфавитов. Компьютерная верстка книги выполнена В. В. Расиным с использованием пакета Latex 2.9. Мы выражаем нашу благодарность Е. Г. Третьяковой, которая выполнила компьютерную верстку части рисунков. Уральский госуниверситет М. О. Асанов г. Екатеринбург В. А. Баранский июль, 2001 В.В.Расин
Глава 1 ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ ГРАФОВ § 1.1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ Пусть V — непустое конечное множество. Через V^ обозначим множество всех двухэлементных подмножеств из V. Обыкновенным графом G называется пара множеств (ν,Ε), где Ε — произвольное подмножество из V^2\ Элементы множеств V и Ε называют соответственно вершинами и ребрами графа G. Множества вершин и ребер графа G будем обозначать также через VG и EG. Обыкновенные графы удобно представлять в виде диаграмму на которых вершинам соответствуют выделенные точки, а ребрам — непрерывные кривые, соединяющие эти точки. На рис. 1 изображены диаграммы трех обыкновенных графов. ь) Рис. 1 Часто приходится рассматривать объекты более общего вида, чем обыкновенные графы (см. рис. 2). Такие объекты в дальнейшем будут называться графами. На рис. 2,α изображен граф, в котором существуют пары вершин, соединенные
более чем одним ребром. Различные ребра, соединяющие две данные вершины, называются кратными. Граф, изображенный на рис. 2,6, содержит ребра, соединяющие вершину саму с собой. Такие ребра называют петлями. Рис. 2 Более точно, графом называют тройку (V,E, φ), где V, Ε — конечные множества, V Φ 0 и φ — отображение из Ε в V^UV. Если φ(β) = {щу}, где и Φ ν, το говорят, что ребро е соединяет вершины и, v. В этом случае будем писать е = uv. Если φ(έ) = w, то ребро е называют петлей в вершине и. В этом случае будем также писать е = ши говорить, что е соединяет вершину и саму с собой. Записывая произвольный граф, мы часто будем опускать φ и представлять граф в виде G = (V,E). Граф, по существу, есть набор из двух множеств произвольной природы — непустого множества вершин и множества ребер, причем каждому ребру соответствуют две концевые вершины, которые, вообще говоря, могут и совпадать (в этом случае ребро является петлей). Отметим, что обыкновенный граф — это граф без петель и кратных ребер. Граф С?, имеющий η вершин, часто называют п-графом\ если, кроме того, G содержит т ребер, то G — (п,т)-граф. Если е = uv — некоторое ребро данного графа, то вершины u,v называются смежными; говорят также, что u,v — концевые вершины ребра е. Ребро е и вершина ν инцидентны, если ν — концевая вершина для е. Ребра ей/ называются смежными, если они имеют общую концевую вершину.
8 Глава /. Основные понятия теории графов Пусть G\ = (Vbi?i), G2 = (V2,J^2) — два графа. Биективное отображение ψ : V\ —> V2 называется изоморфизмом G\ на (?2. если для любых и, ν £ Vi число ребер, соединяющих вершины и и ν в Gi, равно числу ребер, соединяющих ф{и) и ψ(ν) в (?2 (разумеется, при ад = υ число петель в вершине и равно числу петель в вершине ф{и)). Отметим, что в случае обыкновенных графов изоморфизм — это биекция, сохраняющая отношение смежности; иными словами, изоморфизм ψ характеризуется свойством: произвольные вершины и, ν смежны в графе G\ тогда и только тогда, когда вершины il){u),il)(v) смежны в графе G2. Графы G\ и G2 изоморфны (G\ = G2), если существует изоморфизм G\ на G2. На рис. 3 приведены диаграммы двух изоморфных графов. Действительно, отображение ψ. определенное правилом ф{щ) = vit (1 ^ г ^ 6), очевидно, является изоморфизмом. Рис. 3 Отношение «быть изоморфными» на множестве всех графов, очевидно, является отношением эквивалентности. Таким образом, множество всех графов разбивается на классы попарно изоморфных графов. Заметим, что диаграмма задает граф с точностью до изоморфизма. Степенью вершины υ называется число ребер, инцидентных этой вершине, причем каждая петля учитывается дважды. Степень вершины ν обозначается через degG v или просто через cleg υ. Ясно, что в обыкновенном графе степень вершины υ равна количеству вершин, смежных с υ. Окружением Ν(ν) вершины ν называется множество всех вершин, смежных с v.
§1.1. Основные определения 9 Если cleg г; = 0, то вершина ν называется изолированной, а если degv = 1, то — висячей. Ребро е, инцидентное висячей вершине, также называют висячим. Лемма 1 (о рукопожатиях). Пусть G — произвольный граф. Тогда Σ degv = 2\EG\. veVG Доказательство. При подсчете суммы степеней произвольное ребро е = uw внесет свой вклад, равный единице, как в degu, так и в degw, причем петля будет учитываться дважды. D Следствие. Произвольный граф содержит четное число вершин нечетной степени. Доказательство. Пусть Vo и V\ — соответственно множества вершин четной и нечетной степени. Тогда Σ desv + Σ degv = 2\EG\- Ясно, что первое слагаемое четно. Поэтому второе слагаемое также четно. Так как во второй сумме все слагаемые нечетны, их число четно. Следовательно, множество V\ содержит четное число вершин. G Будем называть граф одноэлементным, если он имеет единственную вершину. Граф G называется нулевым или вполне несвязным, если множество его ребер EG пусто. Нулевой η-граф будем обозначать через Оп. Диаграмма графа О а приведена на рис. 1,6. Ясно, что нулевой граф является обыкновенным графом. Обыкновенный граф G называется полным графом, если любые его две различные вершины смежны. Для полного п- графа применяется обозначение Кп. На рис. Ι,α изображен полный граф К±. Очевидно, степень каждой вершины в графе Кп равна η — 1. Поэтому из леммы о рукопожатиях следует, Л ТуГ п(п -1) что число ребер в Кп равно —-.
10 Глава ί Основные понятия теории графов I раф С называют двудольным, если множество VG можно ра ιοπιι. на дна непустых подмножества X и Υ так, что любое |м'0|м> графа соединяет вершину из X с вершиной из У'. Мно- жгииа Л' и Υ — это доли двудольного графа G. Если любые мгршипы χ € X и у € У смежны и двудольный граф является обыкновенным графом, то G называют полным двудольным графом. Если \Х\ = р, \Y\ = qy то такой полный двудольный ι раф обозначают через ΚνΛ. Г'раф Я называется подграфом графа G, если VH С VG и ЕЯ С EG. В число подграфов графа G будем включать и пустой подграф 0. Если V# = VG, то подграф Я называется остовным подграфом. Редукция графа G — это такой его остовный подграф Я, что Я является обыкновенным графом с наибольшим возможным числом ребер. Пусть U — подмножество из VG. Обозначим через D множество всех ребер е = uv Ε EG таких, что щу е U. Граф G(t7) = (ί/, Ε>) называется подграфом, порожденным множеством вершин U. Аналогично определяется подграф, порожденный заданным множеством ребер. Пусть D С EG. Обозначим через U множество всех вершин, являющихся концевыми для ребер из D. Тогда граф G(D) = (U,D) называют подграфом, порожденным множеством ребер D. Пусть G — произвольный граф и Я — его подграф. С каждой вершиной ν и каждым ребром е можно связать подграфы Я-υ, Я-еиЯ + е. Подграф Я — ν получается из подграфа Я удалением вершины ν и всех инцидентных этой вершине ребер. Отметим, что если υ не лежит в подграфе Я, то Я - υ = Я. Подграф Я - е получается из Я удалением ребра е. Здесь также Η — е = Ну если е не лежит в Я. Подграф Я 4- е получается из Я добавлением ребра е и двух его концевых вершин. Если е лежит в Я, то Я + е = Я. Через Sub(G) будем обозначать множество всех подграфов графа G. Определим отношение ^ на Sub(G), полагая Н\ ^ ^ Hi для подграфов Н\ и Я2 графа G тогда и только тогда, когда //| является подграфом в Я2, т. е. когда VH\ С УЯ2 и ЕЯ| С ЕЯ2. Очевидно, отношение ^ есть частичный порядок
§ L2. Маршруты, связность, циклы и разрезы 11 на Sub(G). Будем говорить, что Н\ содержится в Я2, если #1 < Я2. Пусть Н\ и Яг — произвольные подграфы графа G. Определим объединение Η χ U Я2 подграфов Н\ и Я2, полагая К(Я! U Я2) = VHX U УЯ2 и Е(Я! U Я2) = Е'Я! U ЕН2. Очевидно, Ηχ U Я2 является точной верхней границей для Н\ и Я2 в Sub(G) относительно ^. Определим пересечение Н\ Π Я2 подграфов Н\ и Я2, полагая V(HlnH2) = VHlnVH2 и Ε(Η1ηΗ2) = ΕΗϊηΕΗ2. Очевидно, Ηχ Π Я2 является точной нижней границей для Hi и Я2 в Sub(G) относительно С Нетрудно установить, что Sub(G) является дистрибутивной решеткой относительно ^ с указанными операциями U и П. Пусть #i,#2,...,fft — подграфы графа G и выполнено условие HiDHj = 0, если г Φ j и i,j = 1,2,...,*. Тогда Ях U Я2 U · · · U Ht называется дизъюнктным объединением и обозначается через Я] ύ Я2 ύ ... ύ Ht. § 1.2. МАРШРУТЫ, СВЯЗНОСТЬ, ЦИКЛЫ И РАЗРЕЗЫ Маршрутом в графе G называется чередующаяся последовательность вершин и ребер Vo,ei,vi,...,vt-i,et,vt, в которой е* = Vi-i^i (1 ^ г ^ £). Такой маршрут кратко называют (уо^УгУмаршрутом и говорят, что он соединяет уо с yt\ в свою очередь вершины vo, ^ — это концевые вершины указанного маршрута. Часто маршрут изображают в виде
12 Глава /. Основные понятия теории графов Отмстим, что стрелки здесь указывают лишь порядок следо- 1ЫЯМИ ииршин в маршруте. Длиной маршрута называют количество содержащихся в нем ребер. Случай, когда длина маршрута равна нулю, не исключается; в этом случае маршрут сводится к одной вершине. Заметим, что в обыкновенном графе маршрут полностью определяется последовательностью vo,v\,... ,vt своих вершин. Если vo = vt, то (vo, ^-маршрут называется замкнутым. В произвольном маршруте любое ребро и любая вершина, разумеется, могут повторяться. Накладывая ограничения на число повторений вершин или ребер, мы приходим к следующим частным видам маршрутов. Цепь — это маршрут без повторяющихся ребер. Цепь называется простой цепью, если в ней нет повторяющихся вершин, кроме, быть может, совпадающих концевых вершин. Замкнутая простая цепь называется циклом. Заметим, что цикл полностью определяется множеством своих ребер, поэтому часто под циклом мы будем понимать соответствующее ему множество ребер. Петля дает цикл длины 1, пара кратных ребер образует цикл длины 2. Циклы длины 3 называют обычно треугол ьниками. Лемма 1. Если для некоторых вершин и, ν в графе существует (щ ν)-маршрут, то существует и простая (υ,,ν)- цепь. Доказательство. Рассмотрим в графе (и,г;)-маршрут наименьшей длины. Покажем, что этот маршрут является простой цепью. Если в нем имеется повторяющаяся вершина wt то, заменяя часть маршрута от первого вхождения вершины w до ее второго вхождения на одну вершину w, мы получим более короткий (и,г;)-маршрут. D Граф G называется связным, если для любых двух различных вершин u,v существует (и,г;)-маршрут. Оказывается, произвольный граф можно получить как объединение связных графов. С этой целью на множестве вершин VG графа G определим отношение связности ~, полагая и ~ ν <=> существует (и,г;)-маршрут.
§ 1.2. Маршруты, связность, циклы и разрезы 13 Легко видеть, что это отношение является отношением эквивалентности. Обозначим через Vi, V^, - - -, VJb классы этого отношения. Пусть Gi = G(Vi) — подграф, порожденный множеством вершин Vi, (1 ^ г ^ А:). Графы Gi, (?2, · · ·, Gk называются компонентами связности графа G. Ясно, что каждая компонента связности является связным подграфом. Очевидно, каждый связный подграф графа G является подграфом некоторой его компоненты связности. Поэтому множество компонент связности — это множество всех максимальных связных подграфов данного графа, и любое ребро принадлежит некоторой компоненте связности. Таким образом, справедливо следующее утверждение: Каждый граф является дизъюнктным объединением своих компонент связности. В дальнейшем граф, имеющий η вершин, т ребер и А: компонент связности будем называть {п,т,к)-графом. а) Ь) Рис. 4 Разрезающим множеством ребер графа называется множество ребер, удаление которого из графа приводит к увеличению числа компонент связности. Минимальное по включению разрезающее множество ребер графа называется его разрезом. Мост графа — это ребро, составляющее одноэлементный разрез. Иными словами, при удалении моста число компонент связности возрастает. На рис. 4 показаны примеры разрезов в графах, причем на рис. 4,6 показан мост.
14 Глава L Основные понятия теории графов Лемма 2. При удалении из графа моста число компонент связности увеличивается точно на единицу. Доказательство. Пусть из графа удаляется мост е = uv. В графе G — е вершины и и υ нельзя соединить простой цепью, иначе сохранится отношение связности и, следовательно, сохранится число компонент связности. Таким образом, вершины и и ν лежат в разных компонентах связности графа G-e. Пусть χ — произвольная вершина графа G, для которой существует простая (#,г;)-цепь (в силу леммы 1 это в точности те вершины, которые лежат в той же компоненте связности графа G, что и вершина г;). Если в этой простой цепи не встречается ребро е, то вершины χ и ν лежат в одной компоненте связности графа G-e. Если в такой простой цепи встречается ребро е, то цепь обязательно имеет вид χ —>... —> и —> v. Поэтому вершины χ и и лежат в одной компоненте связности графа G-e. Итак, при удалении моста е точно одна компонента связности графа G, а именно компонента, содержащая г;, распадается на две компоненты связности графа G — е. D Лемма 3. При удалении из графа ребер его разреза число компонент связности увеличивается точно на единицу. Доказательство. Пусть из графа G удаляется разрез {ei,e2,...,et}. Можно считать, что t > 1. После удаления множества ребер {ei,e2,... ,et_i} число компонент связности сохраняется и ребро et становится мостом. Дальнейшее удаление ребра et в силу леммы 2 приводит к увеличению числа компонент связности ровно на единицу. D Для произвольного ребра графа G есть две возможности: либо е содержится в некотором цикле графа, либо е не содержится ни в каком цикле графа. В первом случае ребро е называют циклическим ребром, а во втором — ациклическим. Выясним связь между ациклическими ребрами и мостами.
§ 12 Маршруты, связность, циклы и разрезы 15 Лемма 4. Ребро графа является мостом тогда и только тогда, когда оно не содержится ни в одном цикле. Доказательство. Пусть е = uv — мост. Если е содержится в некотором цикле, то существует простая (и,г;)-цепь, не содержащая е. Следовательно, после удаления ребра е из графа отношение связности не изменится, что невозможно. Обратно, пусть е = uv не является мостом. После удаления е из графа G вершины и и ν будут лежать в одной компоненте связности графа G-e. В силу леммы 1 в графе G-e имеется простая (и,г;)-цепь. Добавляя к этой цепи ребро е, получим цикл графа G, содержащий ребро е. D Из леммы 4 вытекает, что ациклические ребра — это в точности мосты. Лемма 5. Пусть множество вершин связного граф G разбито на два непустых непересекающихся подмножества U и W. Тогда существует такое ребро е = uw, что ueu uwew. Доказательство. Возьмем две вершины χ Ε U и у G W. В силу связности графа G существует простая (#,1/)-цепь: х = vo —► v\ —► · · · —► vt = У- Пусть Vi — последняя вершина цепи, лежащая в U. Тогда Vi Φ Φ у и Vi+ι eW. Следовательно, ребро ei+i = Vi^i+i является искомым. Π Теорема 1.1. Пусть G — обыкновенный (п,т,к)-граф. Тогда выполнено двойное неравенство ^ (п-к)(п-к + 1) п- к ^ m ζ L1- -. Доказательство. Проверим сначала верхнюю оценку. Обозначим через G обыкновенный граф, имеющий η вершин,
16 Глава 1. Основные понятия теории графов к компонент связности и наибольшее возможное число ребер т. Покажем, что ~ (п- к)(п-к + 1) ш= — -. 2 Легко понять, что каждая компонента связности графа G является полным графом. Поэтому G=Kni 0КП2 \J...\JKnk. Можно считать, что щ ^ п2 ^ . ·. ^ п*. Убедимся, что п2 = 1. Предположим, что п2 > 1. Пусть и — некоторая вершина графа КП2. Удалим п2-1 ребер, инцидентных вершине и, а затем добавим щ ребер, соединяющих вершину и с каждой вершиной графа КП1, т. е. перенесем вершину и из второй компоненты связности в первую. Поскольку щ > П2 — 1, получим граф, имеющий η вершин, & компонент связности и больше чем т ребер. Это противоречит выбору графа G· Следовательно, п2 = 1. Тогда п2 = ... = п* = 1, т. е. все ребра графа G содержатся в полном графе КП1 и щ = η - к + 1. Поэтому ~_ (πι - 1)ηι _ (η - Α;)(η - А: + 1) m~ 2 ~" 2 ' Обратимся теперь к нижней оценке. Для ее проверки применим индукцию по числу ребер. Если т = 0, то η = А:, и требуемое неравенство очевидно. Пусть т > 0. Предположим, что для всех графов с числом ребер, меньшим чем т, оценка имеет место. Рассмотрим (n, m, А:)-граф G. Пусть G\ = G — е, где е — некоторое ребро графа G. Тогда G\ является (n, m - -1,Л;1)-графом, где к\ ^ A:-hi в силу леммы 2. Следовательно, т — \^п — к\ ^ η — & — 1, т. е. ттО η — Л;. D Следствие 1. Пусть G — обыкновенный (п,т)-граф! Если (п-2)(п-1) ™>- ^ -, το граф G связен.
§ 1.2. Маршруты, связность, циклы и разрезы 17 Доказательство. Пусть А: — число компонент связности графа G. Если А: ^ 2, то _^(n-*)(n-fc + l) ^(n-2)(n-l) т ^ - ^ - , что невозможно. Следовательно, А = 1, т. е. граф G связен. D Следствие 2. Если G — произвольный (п,т,&)-граф, то m ^ п — к. Доказательство. Пусть обыкновенный (n, mi, А;)-граф G\ является редукцией графа G. Тогда πι ^ πΐ\ ^ η — к. О Теорема 1.2 (Кёниг). Ненулевой граф является двудольным графом тогда и только тогда, когда он не имеет циклов нечетной длины. Доказательство. В двудольном графе, очевидно, нет петель и любой замкнутый маршрут имеет четную длину. Обратное утверждение теоремы достаточно доказать для связного графа G. Пусть ненулевой граф G связен и не имеет циклов нечетной длины. Зафиксируем некоторую его вершину vo. Разобьем множество всех вершин V на два непустых непересекающихся подмножества Vo и V\ следующим образом. В Vo (в V\) поместим все такие вершины и графа G, что кратчайшая (г7о,и)-цепь имеет четную (соответственно нечетную) длину. Ясно, что vo € Vo- Покажем, что в графе G нет ребер е — аЬ таких, что вершины а и Ь лежат одновременно в Vo или V\. Пусть, от противного, для ребра е = аЬ выполняется а,Ь G Vo (случай а,Ъ е V\ рассматривается аналогично). Пусть Ро — кратчайшая (νο,α)- цепь, a Pi — кратчайшая (г;о,Ь)-цепь. Обе эти цепи имеют четную длину. Обозначим через и последнюю вершину цепи Ро, принадлежащую цепи Р\. Тогда подцепи от vo до и в цепях Ро и Pi имеют одинаковую длину (иначе, пробежав по более короткой подцепи от v0 до и мы смогли бы найти более короткую цепь от vq до α или от vo до Ь, чем цепь Ро или цепь Pi). Очевидно, подцепи от и до α и от и до Ь в цепях Ро
18 Глава /. Основные понятия теории графов и Р\ имеют одинаковую четность. Тогда они вместе с ребром е образуют цикл нечетной длины, что невозможно. D § 1.3. ОРИЕНТИРОВАННЫЕ ГРАФЫ Пусть V, D — произвольные множества, причем V Φ 0. Обозначим через V2 декартов квадрат множества V. Ориентированным графом или, короче, орграфом G называется тройка (V, D, φ), где φ — некоторое отображение множества D в множество V2. Элементы множеств V и D называются соответственно вершинами и дугами орграфа G. Множества вершин и дуг орграфа G удобно обозначать через VG и DG соответственно. Если / — дуга, то <p(f) является упорядоченной парой (u,v), где щу е V. Дуга / выходит из вершины и и заходит в вершину v\ в свою очередь и и ν называются концевыми вершинами дуги /; в дальнейшем будем писать / = йЬ (а иногда даже — f = uv, если нет опасности возникновения путаницы). При записи произвольного орграфа он, как правило, будет представляться в виде G = (VyD). Орграфы принято изображать при помощи диаграмм, аналогичных диаграммам для графов. Разница состоит лишь в том, что линия, изображающая дугу, имеет направление. С каждым орграфом G = (V,D) естественно связать граф Go = (V,E)t называемый основанием данного орграфа. Для получения основания необходимо в орграфе G заменить каждую дугу / = йЬ ребром е = uv. На рис. 5 изображены орграф и его основание. РР Рис. 5
§ 1.3. Ориентированные графы 19 Орграф G называется связным, если связным является его основание. Ориентированным маршрутом или, короче, ормаршру- том в орграфе G называется чередующаяся последовательность вершин и дуг в которой fi = Vi-i^i (1 ^ г ^ t). Такой ормаршрут принято называть (г;о,г;е)-ормаршрутом; вершины υο и i7t называются соответственно начальной и конечной вершинами такого ормаршрута. Если vo = vu то ормаршрут называют замкнутым. Количество дуг, составляющих ормаршрут, — это длина ормаршрута. Ормаршрут, не содержащий повторяющихся дуг, называют орцепью. Простая орцепь — это орцепь без повторяющихся вершин (кроме, быть может, совпадающих начальной и конечной вершин). Замкнутая простая орцепь называется орциклом или контуром. Нетрудно проверить, что существование (и,г;)-ормаршрута гарантирует существование простой (и,г;)-орцепи. Говорят, что вершина ν достижима из вершины и, если существует (и,г;)-ормаршрут. Орграф G сильно связен или ор- связен, если любая его вершина достижима из любой другой вершины. Очевидно, сильно связный орграф является связным; обратное утверждение, разумеется, не верно. Граф G называется ориентируемым, если он является основанием некоторого сильно связного орграфа. Теорема 1.3. Связный граф G ориентируем тогда и только тогда, когда каждое его ребро не является мостом. Доказательство. Пусть граф G является основанием орграфа Η и G содержит мост е. Тогда в Η имеется дуга / = = йЬ, где щ ν — концы ребра е. Очевидно, в Η нет (v,u)- ормаршрутов. Следовательно, граф G не является ориентируемым. Обратно, пусть граф G не имеет мостов, т. е. каждое ребро графа G содержится в некотором цикле. Поскольку любой
20 Глава 1. Основные понятия теории графов цикл является ориентируемым графом, в графе G существует максимальный ориентируемый подграф Н. Убедимся, что Η = G. Допустим, что это равенство не выполнено. В силу связности графа G существует ребро е, инцидентное вершине г; из Я и не лежащее в Н. По предположению ребро е лежит в некотором цикле С. Обозначим через Q множество ребер цикла, не принадлежащих подграфу Н. Нетрудно понять, что добавив к Μ все ребра из множества Q, мы снова получим ориентируемый подграф в противоречие с выбором Н. D Пусть G — произвольный орграф. Полустепенью исхода cleg г; вершины ν называется число всех дуг, имеющих ν в качестве начала. Аналогично, полустепень захода cleg г; — это число всех дуг, для которых вершина ν является концом. Орграф, содержащий η вершин и т дуг будем называть (п, т)-орграфом. Полустепени исхода и полустепени захода связаны следующим очевидным образом. Лемма 1. Пусть G — произвольный (п,т)-орграф. Тогда /] degv = 2J degv = m. v€VG v€VG Это утверждение аналогично лемме 1 из § 1.1, его часто называют орлеммой о рукопожатиях. § 1.4. МАТРИЦЫ, АССОЦИИРОВАННЫЕ С ГРАФОМ Пусть G — произвольный η-граф. Упорядочим множество вершин графа VG = {νι,ν2,...,νη}. Иными словами, занумеруем вершины графа числами от 1 до п. Граф, у которого множество вершин линейно упорядочено или, другими словами, занумеровано натуральными числами от 1 до п, где η — число вершин графа, называется помеченным графом.
§14. Матрицы, ассоциированные с графом 21 Определим матрицу смежности А = A(G) = (ctij)nxn графа (?, полагая а^· равным числу ребер, соединяющих вершины Vi и Vj, причем при г = j каждую петлю учитываем дважды. На рис. 6 приведен пример графа с некоторой нумерацией вершин и указана соответствующая матрица смежности. о Τ / / / γ t w 3 \ 1 J / (2 1 1 θλ 10 12 110 1 [θ 2 1 Oj w 4 Рис. 6 Очевидно, матрица смежности — это квадратная симметрическая матрица. Сумма элементов г-й строки равна degi;*, η т.е. ^2aij = degi;*. Отметим, что для обыкновенных графов матрица смежности бинарна, т. е. состоит из нулей и единиц, причем ее главная диагональ целиком состоит из нулей. Для данного графа имеется, вообще говоря, несколько матриц смежности, отвечающих различным его упорядочениям. Очевидно, одна матрица смежности графа получается из другой его матрицы смежности с помощью некоторой перестановки строк и точно такой же перестановки столбцов. Пусть σ — произвольная подстановка на множестве {1,2,...,п}. Определим матрицу S(a) = (σ^·)ηχη, полагая 7ij" {о! если σ{ι) = j, если σ{ι) φ j. Нетрудно проверить, что S(a *) = S~1(a) и матрица S~l(a)AS(a) = S(a'l)AS(a) получается из матрицы А с помощью перестановки строк и перестановки столбцов, отвечающих подстановке σ.
22 Глава ί. Основные понятия теории графов Таким образом, две матрицы смежности графа G подобны. В силу этого корректно следующее определение. Характеристическим многочленом графа G называется характеристический многочлен любой из его матриц смежности. Совокупность всех корней характеристического многочлена, с учетом их кратности, называется спектром графа G. Далее, говоря о матрице смежности графа G, мы будем предполагать, что граф упорядочен каким-либо образом, хотя в явном виде это упорядочение не будем заранее указывать. Приведем теперь один пример утверждения, иллюстрирующего важность матриц смежности. Теорема 1.4. Пусть А = (ац)пхп — матрица смежности графа G без петель и А1 = (jij)nxnt где Ι Ε N. Тогда jij равно числу (vi,Vj)-Mapuipymoe длины I. Доказательство. Утверждение очевидно при 1 = 1. Пусть I > 1 и утверждение верно для I — 1. Тогда Al~l = {£ij)nxn, где &j равно числу (t;*, ^-маршрутов длины I — 1. Следовательно, η равно числу {vi^Vj)-маршрутов длины ί, так как каждый такой маршрут состоит из (^,^)-маршрута длины ί —1 и ребра, ведущего из предпоследней вершины vs маршрута в его последнюю вершину Vj. О Заметим, что доказанная теорема верна и для графов с петлями, если считать, что каждая петля имеет два обхода (этим число маршрутов, проходящих через данную петлю, увеличивается в два раза). Поскольку матрица смежности А графа G является вещественной симметрической матрицей, она ортогонально подобна некоторой вещественной диагональной матрице D: A = T~lDT. Тогда, очевидно, А1 = T~1DlT. Данная формула позволяет быстро вычислять число (г^, ^-маршрутов длины I для больших значений ί, так как при этом нужно лишь найти D\
§ 1.4. Матрицы, ассоциированные с графом 23 обычным образом вычислить две матрицы Τ, Τ~ι и два раза перемножить матрицы. Отметим, что главная диагональ матрицы D совпадает со спектром графа G. Пусть теперь G — произвольный обыкновенный граф. Упорядочим множество его вершин VG = {υι,υ2,··.,υη}. Определим матрицу Кирхгофа В = B(G) = (Pij)nxm полагая B(G) = ( degui 0 ... О \ О cleg V2 ·. · О -A(G), \ 0 0 ... degvn / где A(G) — матрица смежности графа G. Иными словами, %з = \ О, если г φ j и ν* смежна с Vj, Pij = { 0> если i φ j и Vi не смежна с υ^, если г = j. Отметим, что обыкновенный граф G может иметь несколько различных матриц Кирхгофа, отвечающих различным упорядочениям графа G, и все эти матрицы подобны между собой. Лемма 1. Алгебраические дополнения всех элементов матрицы Кирхгофа равны между собой. Доказательство. Обозначим столбец (1,1,..., 1)* длины п, состоящий из единиц, через 1. Здесь, как обычно, через t мы обозначаем операцию транспонирования матриц. Для матрицы Кирхгофа В = (/%)ηχη выполняется η ]Г Ai = 0 (г = 1,2,..., п), т. е. В · 1 = О, 3 = 1 η Σ βίο = 0 (j = 1,2,..., η), т. е. Iе · Β = 0. Отсюда следует, что detB = 0 и rank Β ^ η — 1.
24 Глава I. Основные понятия теории графов Если rank Б < η - 1, то все алгебраические дополнения элементов матрицы В равны 0. Пусть rank Б = п— 1 и В — присоединенная к В матрица, составленная из алгебраических дополнений Bij элементов /3^, т. е. / Вп В\2 #21 #22 &2п Bnl \ Вп2 \ В1п В силу свойств матрицы В получаем BB = BB = (detB)E = 0. Так как ВВ = 0t любой столбец X матрицы В удовлетворяет системе ВХ = 0. Эта система линейных уравнений имеет ранг η — 1 и дефект 1. Так как В · 1 = 0, этой системе удовлетворяет столбец 1. Следовательно, столбцы матрицы В пропорциональны столбцу 1, откуда следует Bn=Bi2=-= Bin {г = 1,2,... ,η). Аналогично получаем BXj = B2j = · · · = Bnj (j = 1,2,... ,η). D Следовательно, все элементы матрицы В одинаковы. Пусть G — произвольный (п,т)-граф. Упорядочим множество вершин и множество ребер графа: VG = {ϋι,υ2,...,υη} и £G = {ebe2,...,em}. Будем говорить, что наш граф является дважды помеченным. Определим теперь бинарную матрицу инцидентности I = 1(G) = (tij)nxm графа G, полагая: 1) tij = 1 Ф=> вершина Vi инцидентна ребру е^ и е^ не является петлей; 2) tij = 0 во всех остальных случаях.
§ 1.4. Матрицы, ассоциированные с графом 25 [01100] 0 10 11 [о о ι ι ij Рис. 7 На рис. 7 приведен пример графа и его матрицы инцидентности. Здесь вершинам отвечают строки, а ребрам — столбцы. Заметим, что одна матрица инцидентности графа G получается из другой его матрицы инцидентности с помощью некоторой перестановки строк и некоторой перестановки столбцов. Рассмотрим теперь произвольный (п,ш)-орграф G = = (V,D). Упорядочим множество вершин и множество дуг орграфа: V = {t7i,t72,...,t7n} И £> = {/b/2,---,/m}. Определим матрицу инцидентности I = I(G) = (tij)nxm ографа G, полагая: 1) ц^ = 1 если Vi начало дуги fj и fj не петля; 2) tij = —1 если Vi конец дуги fj и fj не петля; 3) Hj = 0 во всех остальных случаях. На рис. 8 приведен пример орграфа и его матрицы инцидентности. Здесь вершинам отвечают строки, а дугам — столбцы. Пусть G — произвольный граф. Превратим каждое его ребро в дугу, придав ребру одно из двух возможных направлений. Полученный орграф на том же самом множестве вершин будем называть ориентацией графа G. На рис. 8 приведен орграф, являющийся одной из ориентации графа, изображенного на рис. 7 Зафиксируем некоторый обыкновенный граф G и возьмем некоторую его ориентацию Я. Кроме того, зафиксируем в G и Η одинаковую нумерацию вершин и одинаковую нумерацию соответствующих ребер и дуг.
26 Глава 1. Основные понятия теории графов (° х 0 -1 ιΟ О -1 О 1 О 1 -1 °1 -1 1 Рис. 8 Лемма 2. Пусть В = B(G) — матрица Кирхгофа обыкновенного графа G и I = 1(H) — соответствующая матрица инцидентности некоторой его ориентации Н. Тогда В = 11г. Доказательство. Если умножить г-ю строку матрицы I на г-й столбец матрицы /*, то получим сумму квадратов элементов г-й строки матрицы 7, которая равна, очевидно, degVi. Пусть теперь г-я строка матрицы I умножается на j-Pi столбец матрицы Р. Если имеется дуга fs = viv) или дуга fs = Vji?i, то получим —1. Если такой дуги нет, то получим 0. D Заметим, что соотношения, указанные для обыкновенного графа в лемме 2, можно переписать в виде /./* / deg^i О V О О elegit О О О \ degvn / Эта формула связывает матрицу смежности А обыкновенного графа с матрицей инцидентности I его ориентации.
Глава 2 ДЕРЕВЬЯ § 2.1. ЛЕСА, ДЕРЕВЬЯ, ОСТОВЫ Ациклический граф, т. е. граф без циклов, называется лесом. Дерево — это связный ациклический граф. Очевидно, лес не содержит петель и кратных ребер, т. е. лес является обыкновенным графом. Теорема 2.1. Для (п,т)-графа G следующие условия эквивалентны: 1) G — дерево; 2) G — связный граф и т = п-1; 3) G — ациклический граф и т = η — 1; 4) G —· граф, в котором любые две вершины соединены единственной простой цепью. 5) G — ациклический граф, и добавление нового ребра приводит к появлению точно одного цикла. Доказательство. 1) ==> 2). Индукцией по т проверим, что в дереве выполнено равенство πι = η — 1. Если т = 0, то, очевидно, η = 1. Пусть m > 0 и для всех деревьев с меньшим чем т числом ребер требуемое равенство выполнено. Рассмотрим дерево Gem ребрами и выберем в нем произвольное ребро е. Очевидно, е — ациклическое ребро, поэтому граф G — е состоит из двух компонент связности G\ и Сг, являющихся деревьями. Применяя к деревьям Gi, G2 предположение индукции, получаем, что в каждом из них число ребер на единицу меньше числа вершин. Отсюда сразу следует равенство m = η— Ι.
28 Глава 2. Деревья 2) ==> 3). Пусть граф G содержит циклическое ребро е. Ясно, что G — е является связным (п,т — 1)-графом. В силу следствия 2 из теоремы 1.1 имеем т — 1 > η — 1, что невозможно. 3) => 4). Проверим сначала, что G — связный граф. Поскольку G ацикличен, его компоненты связности являются деревьями. Так как из 1) следует 2), в каждой компоненте связности число ребер на единицу меньше числа вершин. Отсюда вытекает, что т = η — к> где А: — число компонент связности. Учитывая, что т = η — 1, получаем к = 1. Предположим, что в G для двух вершин и, υ существуют различные простые (и, г;)-цепи Pi и Ρ<ι. Пусть Q — простая (и,а;)-цепь, являющаяся длиннейшим общим началом цепей Pi и Рг. Обозначим через у, ζ вершины, следующие за вершиной χ в Pi и ?2 соответственно. Очевидно, что ребро / = = χζ не принадлежит цепи Рх. Отсюда следует, что подграф Pi U Рг — / является связным графом. Поэтому / — не мост, следовательно, / принадлежит некоторому циклу, что невозможно. 4) =>■ 5). Из условия следует, что в графе G нет циклов, в том числе и петель (если есть петля е = гш, то имеются две простые (и,и)-цепи: ими являются цепь из одной вершины и и цепь и -^-» и). Добавим к графу новое ребро д = vw, где v,w Ε VG. Тогда возникнет цикл, состоящий из простой (v1w)-\xeun и ребра д. Единственность такого цикла следует из единственности простой (г;,гу)-цепи. 5) => 1). Из условия вытекает, что любые две вершины графа G соединены простой цепью, т. е. G — связный граф. Используя ацикличность графа G, заключаем, что G — дерево. D Следствие 1. Неодноэлементное дерево имеет по крайней мере две висячие вершины. Доказательство. Пусть неодноэлементное дерево Τ имеет менее двух висячих вершин. Тогда cleg υ ^ 2 для всех его вершин υ, за исключением, быть может, некоторой вершины vq% для которой deg^o ^ 1. Тогда по лемме о рукопожа-
§ 2.1. Леса, деревья, остовы 29 тиях получаем 2(п — 1) = 2т = V^ cleg υ ^ 2(η — 1) Η-1, что противоречиво. D Лемма 1. Пусть G — произвольный (п,т,к)-граф. G является лесом тогда и только тогда, когда т = п — к. Доказательство. Если G — лес, то в каждой его компоненте связности число ребер на единицу меньше числа вершин. Отсюда немедленно вытекает равенство т = η — к. Если G — не лес, то, отбрасывая не менее одного ребра, получим подграф графа G, являющийся (п, ти А:)-лесом. Тогда т> mi = п — к в силу доказанного. D Пусть G — связный (п,т)-граф. Если G содержит хотя бы один цикл, то, удаляя из графа G некоторое ребро этого цикла, мы уменьшим число циклов по крайней мере на единицу, сохранив связность графа. Ясно, что последовательно разрушая циклы данного графа, можно прийти к остовному подграфу, являющемуся деревом. Такой подграф называется остовным деревом связного графа G. Поскольку дерево с η вершинами содержит η — 1 ребер, для получения остовного дерева из графа G нужно удалить т — η +1 ребер. Если G — произвольный (п, ш, Л)-граф, то объединение остовных деревьев его компонент связности приводит к остовному лесу или остову графа G. Поскольку лес с η вершинами и к компонентами связности содержит η — к ребер, для получения остова из графа G нужно удалить т — η + к ребер. На рис. 9 показан граф G и один из его остовов Г. G Г Рис. 9
30 Глава 2. Деревья Нетрудно заметить, что остов графа G — это его максимальный ациклический подграф. Число r*(G) = т — η + к называется цикломатическим числом, а число r(G) = η — k — рангом (η, га, А;)-графа G. Следующее утверждение показывает, что если r*(G) равно О или 1, то r*(G) совпадает с числом циклов графа G. Лемма 2. Пусть G — произвольный граф. Тогда: 1) G ацикличен тогда и только тогда, когда r*(G) = 0; 2) G содержит единственный цикл тогда и только тогда, когда r*(G) = 1. Доказательство. Утверждение 1) вытекает из леммы 1. Проверим утверждение 2). Если ребро е содержится в единственном цикле графа G, то подграф G — е является остовом. Отсюда (га — 1) — η -f к = 0, т. е. r*(G) = 1. Обратно, пусть Τ — произвольный остов графа G. Равенство r*(G) = 1 означает, что разность между числами ребер графа G и его остова Τ равна 1. Отсюда следует, что G = Т+е для некоторого ребра е. Ребро е добавляется к некоторой компоненте связности остова Г, поэтому граф G = Т+е содержит единственный цикл. D Лемма 3. Любой ациклический подграф графа G содержится в некотором его остове. Доказательство. Достаточно рассмотреть случай, когда G — связный η-граф. Пусть Η — ациклический подграф графа G. Обозначим через Н\ максимальный ациклический подграф, содержащий Я. Ясно, что Н\ включает все вершины графа G. Проверим, что Н\ связен. Предположим, что граф Н\ несвязен. Обозначим через U множество вершин одной из компонент связности графа Н\% а через W — множество всех остальных вершин этого графа. В силу леммы 5 из § 1.2 существует ребро е, соединяющее вершины множеств U и W. Ребро е не образует цикла с ребрами подграфа Яь поэтому подграф Ηχ+e ацикличен, что противоречит выбору Н\. Из связности и ацикличности подграфа Н\ следует, что #ι — остовное дерево. D
§ 2 2. Блоки и точки сочленения 31 Лемма 4. Пусть S и Τ — остовы графа G. Для любого ребра е из S существует такое ребро f из Т, что подграф S — е + f является остовом. Доказательство. Как и выше, достаточно рассмотреть случай, когда G — связный граф. Подграф 5-е имеет две компоненты связности; обозначим через U и W множества вершин этих компонент. Поскольку остов Τ является связным графом, существует ребро / из Т, соединяющее вершины, одна из которых принадлежит t/, а другая — W. Легко понять, что подграф S — е 4- / ацикличен и связен. Следовательно, S - е + f является остовом. D § 2.2. БЛОКИ И ТОЧКИ СОЧЛЕНЕНИЯ Пусть G = (V,E) — произвольный граф. Вершина ν называется точкой сочленения, если граф G - ν имеет больше компонент связности, чем граф G. Связный граф называется неразделимым, если он не содержит точек сочленения. В связном графе полезно выделить максимальные неразделимые подграфы. Это можно сделать подобно тому, как в произвольном графе были выделены максимальные связные подграфы (компоненты связности). Блоком графа G называется любой его максимальный неразделимый подграф. На рис. ΙΟ,α показаны точки сочленения w, v некоторого связного графа, а на рис. 10,6 приведены его блоки. Очевидно, любой неразделимый подграф графа содержится в некотором его блоке. Поэтому любое ребро лежит в некотором блоке; то же самое относится и к произвольному циклу. Ясно, что любой блок связного неодноэлементного графа сам неодноэлементен. Лемма 1. Пусть ν — произвольная вершина связного неодноэлементного графа G. Тогда следующие условия эквивалентны: 1) ν — точка сочленения;
32 Глава 2. Деревья Рис. 10 2) существуют различные вершины и и w, не равные ν, такие что ν принадлежит любой простой (и1ъи)-цепи; 3) существует разбиение множества вершин графа G — — ν на два непустых подмножества U и W такое, что для любых и е U и w e W вершина ν принадлежит любой простой (щъи)-цепи. Доказательство. 1) ==> 3). Так как ν — точка сочленения, граф G—v не связен. В качестве U возьмем множество вершин одной компоненты связности графа G — ν, а в качестве W — множество его остальных вершин. Тогда любые вершины и Ε € U и w e W лежат в разных компонентах связности графа G-v. Отсюда следует, что любая простая (и,гу)-цепь графа G проходит через v. 3) => 2). Очевидно. 2) => 1). Ясно, что и и w лежат в разных компонентах связности графа G — v, поэтому ν — точка сочленения графа G. D Лемма 2. Любые два различных блока связного графа G имеют не более одной общей вершины. Доказательство. Предположим, что различные блоки В\ и £?2 имеют более одной общей вершины. Очевидно, подграф В\ U£?2 связен. В силу максимальности В\ и В2 этот подграф имеет точку сочленения v. Так как В\ и 2?2 — блоки, графы
§ 2.2. Блоки и точки сочленения 33 B\—v и B2 — V связны. В силу предположения {Β\—υ)(Λ{Β2 — — ν) Φ§. Тогда граф (£i U В2) - ν = (Bi -v)\J (B2 - ν) также связен. Следовательно, υ не является точкой сочленения графа В\ U В2, и мы пришли к противоречию. Лемма доказана. D Теорема 2.2. 1) Пусть В\ и В2 — два различных блока связного графа G. Тогда либо В\ Π Β2 = 0, либо В\ и В2 имеют единственную общую вершину, которая является точкой сочленения графа G 2) Пусть ν — точка сочленения связного графа G Тогда ν является общей вершиной по крайней мере двух различных блоков графа G. Доказательство. 1) В силу леммы 2 либо В\ ПВ2 = 0, либо В\ и В2 имеют единственную общую вершину. Пусть ν — единственная общая вершина для В\ и В2. В силу связности блоков существуют вершины и € VB\ и w € VB2, смежные с v. Пусть е\ = uv Ε ЕВ\ и е2 = vw G ЕВ2. Если существует простая (и,гу)-цепь, не проходящая через vt то эта цепь и ребра еь е2 образуют цикл С. Цикл С содержится в некотором блоке В3 графа G, имеющем не менее двух общих вершин с В\ (среди них и и ν), а также не менее двух общих вершин с В2 (среди них ν и w). Тогда в силу леммы 2 получаем В\ = В3 = В2, что противоречиво. Таким образом, любая простая (и,гу)-цепь проходит через v. Следовательно, ν — точка сочленения графа G. 2) Пусть ν — точка сочленения связного графа G. Тогда существуют две различные вершины и и wy отличные от г; и такие, что любая простая (гг,гу)-цепь проходит через v. Очевидно, можно считать, что и и w смежны с v. Пусть е\ = uv и е2 = vw — ребра графа G. Если е\ и е2 лежат в одном блоке В графа G, то в блоке В имеется простая (и,гу)-цепь, не проходящая через ν (так как в блоке нет точек сочленения), а это противоречит выбору и и w. Пусть В\ и В2 — блоки, содержащие ребра е\ и е2
34 Глава 2. Деревья соответственно. Ясно, что В\ Φ Β<ι и ν — общая вершина блоков В χ и В2 Π Заметим, что любой неразделимый граф совпадает со своим единственным блоком. Поэтому в дальнейшем неразделимые графы будут называться блоками. Лемма 3. Пусть G — блок, содержащий не менее трех вершин. Тогда любые две вершины графа G принадлежат некоторому общему циклу. Доказательство. Пусть и и ν — две вершины блока G. Через U обозначим множество всех вершин, которые лежат на циклах, проходящих через и. Так как в G нет точек сочленения и имеется не менее трех вершин, в G нет мостов. Поэтому каждая вершина, смежная с и, лежит в {/, причем через вершину и проходят циклы, не являющиеся петлями. Ясно, что и е U и \U\ > 1. Рассуждая от противного, предположим, что ν & U. Возьмем кратчайшую (г;,гу)-цепь такую, что w Ε U. Пусть она имеет вид ν = ν0 —у уг —у... —у yt_x -i» vt =r w, где t^l. Возьмем некоторый цикл С длины > 1, проходящий через w и и (случай w = и не исключается). Пусть w\ — вершина цикла С, отличная от w. Так как w не является точкой сочленения, существует простая (г^-ьги^-цепь, не проходящая через w. Пусть Рх — начальная подцепь этой цепи от вершины vt_! до первой вершины w2, лежащей в С (рис. 11). η Ι ι « ^ I W — Vt φ φ Рис. Π
<$ Jt 2. Блоки и точки сочленения 35 Обозначим через Ρ<ι ту из простых (гУ2,гу)-цепей цикла С, которая содержит вершину и. Тогда цепи Рь Р2 и ребро е образуют цикл длины > 1, содержащий и и vt-\, т. е. vt-\ £ < /У, что противоречиво. D Лемма 4. Пусть G — блок, содержащий не менее трех twpmuH. Тогда любая вершина и любое ребро графа G, не являющееся петлей, принадлежат некоторому общему циклу. Доказательство. Возьмем произвольную вершину w блока G и его ребро е = uv, не являющееся петлей. В силу леммы 3 можно считать, что w Φ и и w φ v. По лемме 3 существует цикл С, проходящий через w и и. Можно считать, что вершина ν не лежит на цикле С. Так как и не является точкой сочленения, существует простая (г;,гу)-цепь, не проходящая через и. Через Р\ обозначим начальную подцепь этой цепи от υ до первой вершины гуь принадлежащей циклу С (случай wi = w не исключается). Обозначим через Рг ту из простых (ш1,и)-подцепей цикла С, которая содержит w. Тогда цепи Ρχ, Ρ<ι и ребро е образуют искомый цикл, содержащий w и е. D Теорема 2.3. Пусть G — связный граф, содержащий не менее трех вершин. Тогда следующие условия эквивалентны: 1) G — блок; 2) любые две вершины графа G принадлежат некоторому общему циклу; 3) в графе G любая вершина и любое ребро, не являющееся петлей, принадлежат некоторому общему циклу; 4) в графе G любые два ребра, не являющиеся петлями, принадлежат некоторому общему циклу; 5) в графе G для любых двух вершин и любого ребра, не являющегося петлей, существует простая цепь, соединяющая эти вершины и проходящая через данное ребро; 6) для любых трех различных вершин u,v,w графа G существует простая (и1гю)-цепь, проходящая через ν; 7) для любых трех различных вершин u,v,w графа G существует простая {и,ь))-цепь, не проходящая через v.
36 Глава 2. Деревья Доказательство. 1) ==> 5). В силу леммы 4 можно считать, что для блока G выполняется 3). Возьмем две вершины w\, W2 блока G и его ребро е = uv, не являющееся петлей. В силу 3) можно считать, что вершины w\, w<i, u, v попарно различны и существует цикл С, проходящий через w2 и е. Будем считать, что вершина w\ не лежит в цикле С. Так как w2 не является точкой сочленения, существует простая (w\,u)~ цепь, не проходящая через w2. Через Pi обозначим начальную подцепь этой цепи от w\ до первой вершины г^з, лежащей в С (рис. 12). и ν Рис. 12 Пусть Р2 — подцепь цикла С, соединяющая вершины г^з, w2 и содержащая ребро е. Искомая цепь получается объединением цепей Р\ и Р2. 5) ==> 6). Пусть и, v, w — три различные вершины графа G. Возьмем произвольное ребро е, инцидентное г; и не являющееся петлей. В силу 5) существует простая (гх,гу)-цепь, проходящая через е, и, следовательно, содержащая v. 6) ==> 7). Пусть ut v, w — три различные вершины графа G. В силу 6) существует простая (и,г;)-цепь, проходящая через w. Тогда ее (и,гу)-подцепь не содержит v. 7) ==> 1). Вытекает из леммы 1. Итак, мы имеем 1) ==> 5) ==> 6) ==> 7) => 1). Для завершения доказательства осталось заметить, что импликации 5) => 4) => 3) => 2) => 7) очевидны. D В связи с блоками на множестве ребер EG связного графа G, не являющихся петлями, полезно рассмотреть следую-
\N J 2 Блоки и точки сочленения 37 тес отношение: с дз / <*=>· е = / или е, / содержатся в некотором цикле. .Члметим, что если е « /, то е и / лежат в Одном и том же Олоке графа G. Обратно, если ей/ лежат в некотором блоке ||>лфа G, то в силу теоремы 2.3 выполняется е « /. Таким образом, отношение « является отношением эквивалентности, а каждый его класс состоит из всех ребер некоторого блока, не являющихся петлями. Что же касается петель, то они попадают в те блоки, в которых содержатся инцидентные им вершины. Пусть G — связный граф. Рассмотрим семейство его блоков B\,...,Bt и семейство его точек сочленения νι,...,νθ. Построим новый граф bc(G) на множестве вершин {vi,...,v„Si,...,St}- В качестве ребер этого графа возьмем все пары вида {vj,Bi}t где Vj G VBi, г = Ι,.,.,ί, j = l,...,s. Иными словами, мы рассматриваем двудольный граф, вершинами которого являются блоки и точки сочленения, а ребра показывают, как точки сочленения распределены по блокам. На рис. 13 изображены граф G и его граф bc(G). bc{G) Рис. 13 Теорема 2.4. Пусть G — связный граф. Тогда граф bc(G) является деревом.
38 Глава 2. Деревья Доказательство. Очевидно, связность графа G влечет связность графа bc(G). В силу устройства ребер графа bc(G) все они не являются петлями. Пусть в графе bc(G) имеется цикл. Возьмем цикл кратчайшей длины vix -> Bh -> vi2 -> Bh -> > vip -> Bjp -> vip+1 = v4l, где ρ ^ 2, все точки сочленения νιχ,..., Vip попарно различны и все блоки Β^,.,.,Β^ попарно различны. Заметим, что для любого q = 1,... ,р точки сочленения Viq, Viq+1 лежат в блоке Bjq. Поэтому в B3q имеется простая (^,»^+1)-цепь. Объединяя все эти цепи, мы получим цикл С в графе G. Возьмем блок В графа G, содержащий цикл С. Блок В имеет с каждым блоком Bjq (q = 1,... ,р) по крайней мере две различные общие вершины Viq, Viq+1, поэтому в силу леммы 2 мы получаем В = Bjq для любого q = 1,... ,р, что невозможно. Итак, в связном графе bc(G) нет циклов, т. е. bc(G) — дерево. D Учитывая доказанную теорему, граф bc(G) называют деревом блоков и точек сочленения связного графа G. Иногда, допуская вольность речи, говорят, что связный граф является деревом своих блоков. В силу теоремы 2.2 любая точка сочленения связного графа G имеет степень ^ 2 в дереве bc(G), поэтому висячими вершинами дерева блоков и точек сочленения могут быть только блоки. Такие блоки называются висячими. § 2.3. ЧИСЛО ОСТОВОВ В СВЯЗНОМ ОБЫКНОВЕННОМ ГРАФЕ Лемма 1. Пусть Η — обыкновенный {п,п — \)~граф, η ^ ^ 2, I — матрица инцидентности некоторой его ориентации, Μ — произвольный минор порядка η — 1 матрицы I. Тогда: 1) если Η не является деревом, то Μ = 0; 2) если Η — дерево, то Μ = ±1. Доказательство. Заметим, что смена нумерации вершин и нумерации ребер графа Я приводит к перестановке строк
ψ" 2 3 Число остовов в связном обыкновенном графе 39 и перестановке столбцов матрицы /. Рассматриваемый минор при этом может сменить лишь знак. Пусть ν — вершина, соответствующая строке матрицы 7, не вошедшей в матрицу минора М. 1) Пусть Я не является деревом. Тогда граф Я несвязен. Пусть vi,...,vt — множество вершин некоторой компоненты связности #ι графа Я, не содержащей v. 1.1. Если t = 1, то v\ — изолированная вершина и в матрице минора Μ имеется нулевая строка, поэтому Μ = 0. 1.2. Пусть t > 1. С помощью подходящей перенумерации вершин и ребер из Я матрицу I приведем к клеточному виду (* Ι Μ где 1\ — матрица инцидентности ориентации компоненты Н\, а вершине ν отвечает строка, проходящая через /г- Каждый столбец, проходящий через 7Ί, содержит точно одну единицу и точно одну —1 (остальные элементы равны нулю). Следовательно, сумма первых t строк равна 0. Так как первые t строк входят в матрицу минора М, имеем Μ = 0. 2) Пусть Я является деревом. Заново перенумеруем вершины и ребра графа Я с помощью следующей процедуры. В качестве ν\ возьмем одну из висячих вершин дерева Я, отличную от v. Через е\ обозначим инцидентное ей висячее ребро. Рассмотрим дерево Н\ = Я - v\. Если его порядок > 2, то через V2 обозначим одну из висячих вершин, отличных от г;, а через еч — инцидентное ей висячее ребро. Положим Я2 = = Η ι — β2· Продолжаем этот процесс до тех пор, пока не получим одноэлементное дерево Яп_ь единственной вершиной которого обязательно будет вершина v. Получим нумерацию вершин vi,... ,νη = ν и нумерацию ребер ei,... ,en_i. В новой нумерации матрица I будет приведена к виду / ±1 0 ... 0 \ Ι * ±1 ... о| I I * * * ... ±1 \ * * ... * /
40 Глава 2. Деревья причем вершине ν отвечает последняя строка (здесь каждый диагональный элемент равен 1 или -1, а через * обозначены элементы матрицы, значения которых мы не будем выписывать в явном виде). Теперь ясно, что матрица минора имеет треугольный вид и Μ = ±1. Ώ Пусть Ρ и Q — соответственно (s x ^-матрица и (t x s)- матрица, где s < t. Положим С = PQ. Минор порядка s матрицы Q называется соответствующим минором минору порядка s матрицы Р, если множество номеров строк, составляющих матрицу первого минора, равно множеству номеров столбцов, составляющих матрицу второго минора. Сформулируем без доказательства один результат теории матриц, который нам вскоре понадобится. Его доказательство можно обнаружить, например, в книге [14, с. 20]. Формула Бине-Коши. Определитель матрицы С равен сумме всевозможных попарных произведений миноров порядка s матрицы Ρ на соответствующие миноры матрицы Q. Заметим, что при s = t формула Бине-Коши утверждает, что определитель произведения двух квадратных матриц порядка s равен произведению определителей этих матриц. Теорема 2.5 (Кирхгоф, 1847). Число остовов в связном неодноэлементном обыкновенном графе G равно алгебраическому дополнению любого элемента матрицы Кирхгофа B(G). Доказательство. Пусть G — произвольный связный обыкновенный (п,т)-граф, η ^ 2 и I — матрица инцидентности некоторой ориентации графа G. Заметим, что т ^ п—1 в силу связности графа G. По лемме 2 из § 1.4 выполняется В = 5(G) = 7· 7*. Пусть В' — подматрица матрицы В, полученная удалением последней строки и последнего столбца, a J — подматрица матрицы I, полученная удалением последней строки. Тогда имеем B' = J.J\
ί Jt 3 Число остовов в связном обыкновенном графе 41 ι до ./ — это ((п-1)хт)-матрица. Очевидно, Впп = detB' есть ллгсбраическое дополнение элемента βηη в матрице Кирхгофа В. В силу формулы Бине-Коши Впп равно сумме квадра- loii всех миноров порядка η — 1 матрицы J. Согласно лемме I каждый такой минор Μ равен ±1, если остовный подграф ι рафа G, ребра которого соответствуют столбцам, вошедшим м матрицу минора М, является деревом, и равен 0 в другом случае. Следовательно, Впп равно числу остовов графа G. Осталось отметить, что по лемме 1 из раздела 1.4 алгебраические дополнения всех элементов матрицы Кирхгофа равны между собой. D Следствие 1. Ранг обыкновенного (п, га, &)-графа G равен рангу его матрицы Кирхгофа, т. е. rank£(G) = η — k. Доказательство. Пусть к = 1, т. е. граф G связен. Тогда в G есть остовное дерево и по теореме Впп φ 0, т. е. rankS(G) ^ η - 1. С другой стороны, detB(G) = 0 и, следовательно, rank i?(G) = η - 1. Пусть теперь к > 1. Тогда при подходящей нумерации вершин матрица B(G) подобна клеточно-диагональной матрице, составленной из матриц Кирхгофа Вг,...,Вк компонент связности графа G. Так как подобные матрицы имеют одинаковый ранг, в силу ранее доказанного получаем к к rankB(G) = Σ rank Bi = ]C(n* - !) = n - fc· n Следствие 2. Число остовов в полном графе Кп равно пп~2. Доказательство. Утверждение очевидно для η = 1 и η = = 2. Пусть η > 2. Мы имеем В(Кп) = ( п-\ -1 ... -1 \ -1 п-\ ... -1 V -1 -1 ... п-1 )
42 Глава 2. Деревья Вычислив определитель (п — 1)-го порядка, получаем Впп=пп-2. Π Так как число остовов в полном графе Кп равно числу помеченных деревьев порядка п, т. е. числу деревьев на множестве вершин 1,2,..., п, следствие 2 эквивалентно следующему утверждению. Теорема 2.6 (Кели, 1897). Число помеченных деревьев порядка η равно пп~2. Рассмотрим следующую задачу об остове минимального веса. Пусть G — связный граф и w : EG -> R — отображение из EG в R. Отображение w называют весовой функцией, a w(e) — весом ребра е е EG. Пусть Τ — остов графа G. Положим w(T) = Σ ™(е). е£ЕТ Число w(T) называют весом остова Т. Задача состоит в следующем: построить алгоритм, который во взвешенном графе (G,w) находит остов минимального веса. В дальнейшем мы укажем такие алгоритмы, которые достаточно быстро находят в графе остов минимального веса. Теорема Кели же показывает, что в графе может быть очень много остовов. Так, в Кп число остовов экспоненциально зависит от п. Поэтому было бы нерационально решать задачу об остове минимального веса, основываясь на переборе всех остовов.
Глава 3 ОБХОДЫ ГРАФОВ § 3.1. ЭЙЛЕРОВЫ ГРАФЫ Замкнутая цепь в графе G называется эйлеровой цепью, если она содержит все ребра и вершины графа. Граф, содержащий эйлерову цепь, будет называться эйлеровым графом. Иными словами, эйлеров граф — это связный граф, в котором имеется замкнутая цепь, проходящая точно один раз через каждое его ребро. Свое название эйлеровы графы получили в честь Л. Эйлера, который первым рассмотрел такие графы в 1736 году в своей знаменитой работе о кенигсбергских мостах. Этой работой Эйлер, по существу, положил начало новому разделу математики — теории графов. Задача о кенигсбергских мостах состояла в следующем. На реке Прегель в Кенигсберге было два острова, соединенных между собой и с берегами семью мостами, как показано на рис. 14,а. Спрашивается, можно ли, начиная с некоторого места суши, обойти все мосты по одному разу и вернуться назад? Эйлер предложил рассмотреть граф, изображенный на рис. 14,6. Нетрудно догадаться, что решение задачи о кенигсбергских мостах сводится к поиску эйлеровой цепи в этом графе. Однако, как показывает следующая теорема, в указанном графе нет эйлеровых цепей. Теорема 3.1 (Эйлер, 1736). Для неодноэлементного связного графа G следующие условия эквивалентны:
44 Глава 3. Обходы графов а) Ь) Рис. 14 1) G — эйлеров граф; 2) каждая вершина графа G имеет четную степень; 3) множество всех ребер графа G можно разбить на циклы. Доказательство. 1) ==> 2). Пусть Ρ — эйлерова цепь графа G с начальной вершиной υο- Двигаясь по цепи Р9 будем подсчитывать степени вершин. Прохождение каждой промежуточной вершины в цепи Ρ вносит число 2 в ее степень. Первое и последнее ребро цепи Ρ дают вклад 2 в степень вершины vo. Так как цепь Ρ содержит каждое ребро графа точно один раз, отсюда следует четность степеней всех вершин графа G. 2) => 3). Граф G связен и не имеет висячих вершин, поскольку степень каждой его вершины четна. В силу следствия 1 из теоремы 2.1 в G содержится некоторый цикл. Обозначим через G\ максимальный подграф графа G, удовлетворяющий условию 3). Поскольку из условия 3) вытекает условие 2), степени всех вершин графа G\ четны. Обозначим через G<i подграф, полученный из G удалением всех ребер графа G\. Предположим, что Gi содержит неодноэлементную компоненту связности Я. Поскольку Η — связный подграф, удовлетворяющий условию 2), в нем нет висячих вершин и, следовательно, Η — не дерево, т. е. в Я содержится цикл С. Если добавить все ребра цикла С вместе с инцидентными им вершинами к подграфу Gi, то получится подграф, содер-
§ 3/. Эйлеровы графы 45 жащий G\ и удовлетворяющий условию 3), что невозможно. Следовательно, подграф G<i не содержит ребер, поэтому G совпадает с G\. 3) ==> 1). Разобьем множество всех ребер графа G на наименьшее число замкнутых цепей Pi,P2,...,Ps (такое разбиение существует в силу условия 3)) и докажем, что s = 1. Пусть s > 1. В силу связности графа G найдется такое г ^ 2, что замкнутые цепи Р\ и Pi имеют общую вершину. Поскольку Р\ и Pi не имеют общих ребер, их можно объединить в одну замкнутую цепь, уменьшив тем самым общее количество цепей s, что невозможно. Следовательно, все ребра графа G принадлежат некоторой замкнутой цепи, т.е. граф является эйлеровым. D Из теоремы 3.1 можно получить следствие, относящееся к произвольным графам. Следствие 1. Пусть G — произвольный граф, содержащий 21 вершин нечетной степени, где I ^ 1. Тогда множество всех ребер графа можно разбить на I цепей, каждая из которых соединяет две вершины нечетной степени. Доказательство. Очевидно, утверждение достаточно доказать для случая, когда граф G связен. Пусть Ul,U2,...,U2Z-l,U2l — все вершины нечетной степени связного графа G. Рассмотрим граф Gi, полученный из G добавлением I новых ребер ci,...,ei таких, что е* = U2i-\U2i (1 ^ i < О· Граф G\4 очевидно, связен и степень каждой его вершины — четное число. Поэтому в G\ существует эйлерова цепь Р. Можно считать, что цепь Ρ начинается с ребра е\. Удаляя из Ρ все ребра е% (1 ζ г ^ О, мы» очевидно, получим I нужных нам цепей. D Цепь в графе G называется полуэйлеровой, если она содержит все ребра и вершины графа. Граф называется полу- эйлеровым, если в нем существует полуэйлерова цепь. Иными словами, полуэйлеров граф — это связный граф, в котором имеется цепь (возможно, незамкнутая), проходящая точно один раз через каждое ребро.
46 Глава 3. Обходы графов Предложение 3.1. Связный граф G является полу эйлеровым графом тогда и только тогда, когда G содержит не более двух вершин нечетной степени. Это утверждение, очевидно, вытекает из теоремы 3.1 и следствия 1. Следующее утверждение уточняет предложение 3.1. Следствие 2. Пусть связный граф G содержит две вершины нечетной степени и и v. Тогда существует (и,г;)-цепь, содержащая все ребра графа G. Граф называется произвольно вычерчиваемым из вершины ν, если любая его цепь с началом в вершине ν может быть продолжена до эйлеровой цепи графа G. Разумеется, если граф произвольно вычерчиваем из вершины г;, то он является эйлеровым графом. Теорема 3.2. Неодноэлементный эйлеров граф G является произвольно вычерчиваемым из вершины ν тогда и только тогда, когда вершина ν принадлежит любому циклу графа G. Доказательство. Пусть вершина ν эйлерова графа G принадлежит любому циклу. Рассмотрим произвольную (v, w)- цепь Ρ и покажем, что ее можно продолжить до эйлеровой цепи. Обозначим через G\ подграф графа G, полученный удалением из G всех ребер цепи Р. Если w = vt то все вершины подграфа G\ имеют четную степень, если же w φ vt то G\ содержит в точности две вершины нечетной степени. Пусть Но — компонента связности графа G\t содержащая вершину v. Ясно, что вершина w принадлежит #о- Следовательно, Но — полуэйлеров граф, и потому в Но существует полуэйлерова (гу,г;)-цепь Q. Нетрудно понять, что Я0 содержит все ребра графа G\. В самом деле, предположим, что G\ содержит неодноэлементную компоненту связности Я, отличную от Но. Тогда Я — эйлеров граф, и потому в Я содержится цикл. Этот цикл, очевидно, не проходит через вершину г;, что невозможно. Следовательно, все компоненты связности подграфа Gi, отличные от Яо, одноэлементны.
§3.1. Эйлеровы графы 47 Таким образом, цепь Q содержит все ребра графа G\. Отсюда вытекает, что объединение цепей Ρ и Q — эйлерова цепь в графе G, являющаяся продолжением цепи Р. Обратно, пусть в графе G существует цикл С, не содержащий вершину v. Рассмотрим подграф G\4 полученный удалением из G всех ребер цикла С. Пусть Я — компонента связности подграфа Gi, содержащая вершину v. Легко понять, что Я — эйлеров граф. Обозначим через Ρ эйлерову цепь подграфа Я. Можно считать, что началом и концом цепи Ρ является вершина v. Поскольку ν не принадлежит циклу С, цепь Ρ нельзя продолжить до эйлеровой цепи графа G. D Опираясь на теорему 3.2, несложно описать строение всех графов, произвольно вычерчиваемых из вершины v. Для этого возьмем произвольный лес Я, т. е. ациклический граф, не содержащий вершину v. Каждую вершину нечетной степени из Я соединим некоторым нечетным числом кратных ребер с г;, а каждую вершину четной степени — четным числом (не исключая 0) кратных ребер с г;, причем каждую изолированную вершину из Я обязательно соединим с ν (см. рис. 15). Кроме того, к вершине ν можно присоединить несколько петель. Полученный граф G: 1) связен; Рис. 15
48 Глава 3. Обходы графов 2) имеет только вершины четной степени (cleg г; четно, так как в графе Η содержится четное число вершин нечетной степени); 3) является произвольно вычерчиваемым из вершины ν, (как эйлеров граф, у которого вершина ν принадлежит всем циклам). Очевидно, верно и обратное, т. е. любой неодноэлементный граф, произвольно вычерчиваемый из вершины ν, можно получить с помощью указанной конструкции. Заметим, что в графе G, произвольно вычерчиваемом из вершины vt на основании определения можно следующим образом построить эйлерову цепь: выходим из вершины ν и идем произвольным образом по маршруту в графе G, соблюдая лишь одно ограничение — из каждой достигнутой вершины выходим только по любому из ранее не пройденных ребер, причем движемся до тех пор, пока это возможно. Итак, в графе, произвольно вычерчиваемом из вершины vt существует очень простой алгоритм построения эйлеровой цепи. В связи с этим графы, произвольно вычерчиваемые из данной вершины, весьма удобны для планирования выставок. Здесь ребра соответствуют помещениям, где выставляются экспонаты, а вершины — местам перехода из одних помещений в другие. На выставке, спланированной таким образом, начав с входа ν, можно автоматически обойти всю выставку, если придерживаться простого правила: войти в помещение, осмотреть его и через другой выход перейти в еще непросмотренное помещение. § 3.2. ГАМИЛЬТОНОВЫ ГРАФЫ Гамильтоновой цепью графа называется его незамкнутая простая цепь, которая проходит через каждую вершину графа точно один раз. Цикл графа, проходящий через каждую его вершину, называется гамильтоновым циклом. Граф называется гамильтоновым, если он обладает гамильтоновым циклом.
§ 3.2. Гамилыпоновы графы 49 Очевидно, вопрос о существовании гамильтоновых цепей и циклов достаточно изучить только для класса обыкновенных графов. Указанные названия цепей и циклов связаны с именем Уильяма Гамильтона, который в 1859 году предложил следующую игру-головоломку: требуется, переходя по очереди от одной вершины додекаэдра к другой вершине по его ребру, обойти все 20 вершин по одному разу и вернуться в начальную вершину. Отметим, что придумано еще много других развлекательных и полезных задач, связанных с поиском гамильтоновых циклов. Сформулируем две из них. 1. Компанию из нескольких человек требуется рассадить за круглым столом таким образом, чтобы по обе стороны от каждого сидели его знакомые. Очевидно, для решения этой задачи нужно найти гамиль- тонов цикл в графе знакомств компании. 2. (Задача о шахматном коне.) Можно ли начиная с произвольного поля шахматной доски обойти конем последовательно все 64 поля по одному разу и вернуться в исходное поле? Несмотря на внешнее сходство задач об эйлеровых цепях и гамильтоновых циклах, оказалось, что проблемы нахождения эффективных критериев существования таких цепей и циклов имеют принципиально различную сложность. Как было показано в предыдущем разделе, простой и эффективный критерий существования эйлеровой цепи устанавливается достаточно просто. Конечно, хотелось бы найти подобный критерий и для существования гамильтонова цикла. Однако поиск эффективного критерия такого рода является одной из труднейших нерешенных задач теории графов. В данном разделе мы приведем одно из наиболее интересных достаточных условий существования гамильтонова цикла в обыкновенном графе, полученное к настоящему времени. Сначала дадим необходимые определения и докажем одну вспомогательную лемму. Пусть граф G имеет η вершин v\, V2,..., νη. Положим di = = elegit (г = 1,2,... ,n) и будем считать, что вершины графа
50 Глава 3. Обходы графов упорядочены таким образом, что d\ < d2 < ... < dn. Последовательность di,d2,...,dn называют последовательностью степеней графа G. Будем говорить, что числовая последовательность d\ ^ < d2 ^ · · · ^ dn мажорируется числовой последовательностью d\ ^ d2 ^ ... < d'n, если di < d[ для любого г = = 1,2,...,п. Лемма 1. Пусть обыкновенный граф G' получен из обыкновенного графа G добавлением одного нового ребра е. Тогда последовательность степеней графа G мажорируется последовательностью степеней графа Gf. Доказательство. Заметим сначала, что если в неубывающей последовательности d\ ^ d2 ^ ... ^ dn увеличить число di на 1, а затем полученную последовательность привести к неубывающему виду, переставив число di + 1 на положенное место, то новая последовательность будет мажорировать исходную последовательность (очевидно, ту же новую последовательность можно получить сразу, добавив 1 к последнему числу исходной последовательности, равному di). Ясно, что при добавлении к графу нового ребра е = uvt где и ^ vt точно у двух вершин и и ν степени увеличатся на 1. Осталось два раза воспользоваться сделанным замечанием. D Теорема 3.3 (Хватал, 1972). Пусть G — обыкновенный граф, d\ ^ d2 ^ · · · ^ dn — его последовательность степеней и η ^ 3. Если для любого натурального числа к верна импликация dk<,k < π/2 -* dn-k ^n-k, (*) то граф G гамильтонов. Доказательство. Сделаем сначала три очевидных замечания. 1) Если cffc ^ к, то число вершин, степень которых не превосходит А:, больше или равно к. Очевидно, верно и обратное утверждение.
§ 3.2. Гамилыпоновы графы 51 2) Если dn-k ^ п—к, то число вершин, степень которых не меньше η — fc, больше или равно к 4-1 (достаточно заметить, что в последовательности cfn_fc,cfn_fc+i,... ,dn имеется к 4- 1 чисел). Конечно, и здесь верно обратное утверждение. 3) Если условие (*) верно для некоторой последовательности степеней, то оно верно и для мажорирующей ее неубывающей последовательности. Пусть теперь, от противного, существует обыкновенный п- граф, где η ^ 3, который удовлетворяет условию (*), но не является гамильтоновым графом. Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамиль- тонов обыкновенный граф G. В силу 3) граф G удовлетворяет условию (*). Заметим, что граф Кп гамильтонов при η > 3. Будем считать, что граф G — это максимальный негамильтонов остовный подграф графа Кп. Возьмем две такие несмежные вершины и и ν графа G, что сумма deg u + deg г; является наибольшей из возможных. Без ограничения общности будем считать, что deg u ^ deg v. Добавим к G новое ребро е = uv. Тогда граф G + е гамильтонов. Рассмотрим гамильтонов цикл графа G 4- е. В нем обязательно присутствует ребро е = uv. Отбрасывая ребро е из цикла, получим гамильтонову (и,г;)-цепь в графе G: U = Wi,U2,. .. ,Wn = V. Положим S = {г | существует е* = u\ui+i Ε EG}, Τ = {г I существует fa = щип Ε EG}. Покажем, что S Π Τ = 0. Действительно, если j e S Π Γ, то в графе G имеется гамильтонов цикл: ei fi U\ -4 Uj + ι —> Uj+2 —¥···—¥ Un -4 Uj —> Uj-i ->···—> Ui. Из определения S и Т следует S U T С {1,2,..., η — 1}, поэтому 2^eg w ^ degu 4- deg υ = |S| 4- |Г| = \S U Г| < η, т. е. deg u < n/2 и deg w 4- deg υ < п.
52 Глава 3. Обходы графов Так как S Π Г = 0, ни одна вершина ujt где j" Ε S, не смежна с υ = ип. Отсюда в силу выбора и и υ имеем deguj ^ ^ degu. Положим к = degu. Тогда имеется по крайней мере \S\ = degu = к вершин, степень которых не превосходит к. В силу 1) выполняется dk ζ к < п/2. По условию (*) получаем dn-k ^ η- к. В силу 2) имеется по крайней мере к + 1 вершин, степень которых не меньше п — к. Вершина и может быть смежна самое большее с fc из этих к -f 1 вершин, так как к = degu. Следовательно, существует вершина w, не смежная с и, для которой degw ^ η — к. Тогда получаем degw + degw ^ к + (η — к) = η > degu -f degv, что противоречит выбору и и υ. О Следствие 1. Пусть G — обыкновенный граф, d\ ^ d<i ^ ^ ... ^ dn — его последовательность степеней ип)3. Граф G гамильтонов, если выполнено одно из условий: 1) dk ^ п/2 для любого к = Ι,.,.,η (теорема Дирака, 1952); 2) degu-hdegv ^ η для любых двух различных несмежных вершин и,υ графа G (теорема Оре, 1960); 3) dk > к для любого натурального числа к такого, что 1 ^ к < п/2. Доказательство. Достаточно установить, что 1) => 2) => =>3) => (*). Импликации 1) => 2) и 3) => (*) совершенно очевидны. 2) => 3). Пусть, от противного, верно 2), но не верно 3). Тогда существует такое t, что 1 ^ t < п/2 и dt < t. Возьмем произвольные числа t\,t2 такие, что 1 ^ t\ < t^ ^ t. Тогда dtl, dt2 ^ dt < £ < n/2 влечет dtl 4- dt2 < n, откуда в силу 2) вершины vti>vt2 смежны. Таким образом* вершины v\, V2,..., vt порождают полный подграф.
\V Л 2. Гамилыпоновы графы 53 Так как dt ^ t, любая вершина vi для г = Ι,.,.,ί смежна не более чем с одной вершиной Vj для j Ε {ί + Ι,.,.,η}, причем |{t + l,...,n}| = η —ί. Заметим, что η-ί> £, поскольку t < n/2. Поэтому существует вершина Vj для некоторого ,/' = t + l,...,n, которая несмежна с вершинами vi,...,vt. 11оскольку Vj несмежна сама с собой, отсюда следует dj ^ η — t — 1. Тогда dt + dj ^t + n-t-1 <n и,вершины vt,Vj несмежны и различны, что противоречит 2). D Гамильтоновой орцепью орграфа называется его незамкнутая простая орцепь, которая проходит через каждую вершину орграфа точно один раз. Орцикл орграфа, проходящий через каждую его вершину, называется гамильтоновым ор~ циклом. Орграф называется полу гамильтоновым, если он обладает гамильтоновой орцепью, и — гамильтоновым, если он обладает гамильтоновым орциклом. О гамильтоновых орграфах в целом известно не очень много. Приведем без доказательства аналог теоремы Дирака. Теорема 3.4 (Гуйя-Ури). Пусть G — орсвязный п- орграф. Если cleg υ ^ η/2 и cleg υ ^ η/2 для любой его вершины υ, то G — гамильтонов орграф. Рассмотрим теперь один важный класс орграфов и выясним, когда орграф из этого класса будет гамильтоновым. Турниром называется орграф, основание которого есть полный граф, т. е. любые две его различные вершины соединены точно одной дугой и нет петель. Такое название выбрано в связи с тем, что эти графы удобно использовать для описания результатов командных соревнований в некоторых видах спорта. Так как турнир может иметь источник (или сток), т.е. вершину, в которой дуги только выходят (заходят), турнир может быть и негамильтоновым. Тем не менее справедлива Теорема 3.5 (Редей и Камион). 1) Любой турнир полу- гамильтонов. 2) Любой орсвязный турнир гамильтонов.
54 Глава 3. Обходы графов Доказательство. 1) Утверждение очевидно для турнира, содержащего менее трех вершин. Предположим по индукции, что любой турнир на η вершинах полугамильтонов. Рассмотрим произвольный турнир G, имеющий η + 1 вершин, где η ^ 2, и произвольную вершину и в нем. По предположению индукции турнир G — и полугамильтонов, т. е. в нем существует гамильтонова орцепь V\ -> V2 -> · · · -> Vn. Если в G имеется дуга е\ = uv\ или дуга fn = νηιι, то, очевидно, турнир G полугамильтонов. Поэтому можно считать, что в G присутствуют дуги /i = v\u и еп = uvn. В указанной выше гамильтоновой орцепи турнира G - и возьмем первую вершину vit для которой в G имеется дуга е* = uvi. В силу выбора вершины ν* в G имеется дуга fi-\ = vi-\u. Тогда в турнире G получаем гамильтонову орцепь v\ —> · · · —> Vi-\ —> и -> ν» —> · ■ · —> г;п. 2) Будем доказывать более сильное утверждение: любой орсвязный турнир G на η вершинах содержит орциклы длины 3,4,..., п. Отметим, что любой неодноэлементный орсвязный турнир, очевидно, содержит не менее трех вершин. Пусть G — неодноэлементный орсвязный турнир. Возьмем в турнире G произвольную вершину υ. Множество вершин турнира G — ν распадается на два непересекающихся подмножества V\ и V2, где в V\ собраны все вершины и, для которых в G имеется дуга из и в υ, а в V<i — все вершины ги, для которых в G имеется дуга из υ в w. Если V\ = 0, то ν — источник турнира G, что невозможно. Следовательно, V\ φ 0 и, аналогично, 16 φ 0. Тогда в силу орсвязности турнира G обязательно существует дуга g = wu для некоторых w G V2 и и G € Vi. Поэтому в турнире G получаем орцикл υ -> w -> и-> ν длины 3. Предположим теперь, что в G имеется орцикл V\ —> V2 —> · · · -> Vt —> V\
j! .7.2. Гамильтоновы графы 55 длины £, где 3 ^ t < п. Покажем, что в G сущестует орцикл длины £ + 1. Положим U = VG\{v1,v2,...,vt}. Пусть в множестве U найдется вершина и такая, что в G имеются дуги fa = ViU и ej = uvj для некоторых г, j таких, что 1 ^ г, j'^ t и г φ j. Рассмотрим два случая. 1. Если г < j, то существует s такое, что i<s^jhbG присутствуют дуги fs-i = vs-\u и е3 = uv3. Тогда в турнире G получаем орцикл длины t + 1: vi —> · · · —> vs_i —> u —> νθ —>■··—> vt —> νχ. 2. Пусть j < г. Если в G существует дуга f\ = v\u, то мы оказываемся в условиях рассмотренного случая, где вместо пары г J надо взять пару l,j. Следовательно, мы можем считать, что существует дуга е\ = uv\ и, аналогично, существует дуга ft = vtu. Тогда в турнире G получаем орцикл длины £4-1: v\ —>···—> vt —> u —> vi. Таким образом, мы можем считать, что множество U распадается на два непересекающихся подмножества V\ и V2 таких, что: 1) в V\ собраны все вершины и Ε U, для которых дуга, инцидентная и и вершине ν» (г = 1,..., £), имеет вид е* = uv*; 2) в V2 собраны все вершины и Ε £/, для которых дуга, инцидентная ν и вершине ν* (г = 1,... ,£), имеет вид /» = ν^ν. Если Vi = 0, то турнир G не будет орсвязным, так как тогда не существует простых орцепей с началом в V2 и концом в {vi,..., vt}. Следовательно, V\ Φ 0 и, аналогично, Vfc 7^ 0· Легко видеть, что в силу орсвязности турнира G существуют вершины w2 € V2 и Mi Ε VI, для которых в G имеется дуга g = w2wi. Тогда в турнире G получаем орцикл длины t +1: U/2 —> Wl —> *>2 —>···—> Vt —> Μ2· Π
Глава 4 МАТРОИДЫ § 4.1. ПОЛУМОДУЛЯРНЫЕ РЕШЕТКИ, УСЛОВИЕ ЖОРДАНЛ-ДЕДЕКИНДЛ Напомним, что решеткой называется алгебра L с двумя бинарными операциями Л и V такими, что для любых а,Ь,с€ Ε L выполняется 1) α Λ α = α, 1') α V α = α, 2) α Λ 6 = 6 Λ α, 2') α V 6 = b V α, 3) α Λ (6 Λ с) = (α Λ 6) Λ с, 3') α V (6 V с) = (α V 6) V с, 4) α Λ (α V 6) = α, 4') αν(οΛ6) = α. В решетке L можно ввести отношение частичного порядка ^, полагая a ^b^ a Ab — a (a, b Ε L). Отметим, что аЛЬ и а\/Ь являются соответственно точными нижней и точными верхней границами для элементов α и b относительно ^. Решетка L называется модулярной, если α ^ 6 -> α Л (6 V с) = 6 V (α Λ с) для любых а, 6, с Ε I/. Для элементов а и b решетки L таких что α ^ 6, положим [а, 6] = {х Ε I/1 а ^ χ ^ 6}.
\M / / Полумодулярные решетки, условие Жордана-Дедекинда 57 Это подмножество замкнуто относительно операций Л и V, τ е. является подрешеткой, и называется интервалом решетки L. Лемма 1. Для любых элементов а и b модулярной решетки L интервалы [α Λ 6, а] и [6, α V b] изоморфны. Доказательство. Определим отображение φ из [аЛЬ,а] в [6, α V b] и отображение φ из [6, α V 6] в [α Λ 6, а], полагая 0(ж) = χ V 6 (# Ε [α Λ 6, α]), гр(у)=уЛа (ye [b,aVb]). Заметим, что αΛ6^#^α=>6 = (αΛ6)ν6^ ф(х) ^ α V 6 и 6^?/^aVb=>aAb< ф(у) ^а/\(аУ Ь) = а. Далее, для любого χ Ε [α Λ 6, α] выполняется ψφ(χ) = (х V b) Λ α = χ V (α Λ 6) = χ, т. е. ^0 тождественно на [α Λ 6, α] и, аналогично, φψ тождественно на [b,aVb]. Следовательно, ф и ψ — две взаимно обратные биекции. Кроме того, φ и ψ сохраняют отношение ^: х\ ^Χ2 =>Φ(χι) <^(я2), 2/1 ^2/2 => Ф{У\) ^ФЫ) для любых х\,Х2 Ε [αΛ6,ο] и 2/1,2/2 € [b,aVb]. Отсюда следует, что 0 — изоморфизм подрешетки [α Λ 6, а] на подрешетку [6, a V Ь]. □ Через <· будем обозначать отношение покрытия в решетке £ , т. е. мы полагаем a <· b, если a < b и интервал [a, b] двухэлементен.
58 Глава 4. Матроиды Решетка L называется полумодулярной, если aAb <a=> b <oV b для любых α, 6 Ε L. В силу леммы 1 любая модулярная решетка полумодулярна. Пусть V — конечномерное векторное пространство над телом F. Тогда решетка Sub У подпространств пространства V, как известно, модулярна и, следовательно, полумодулярна. Рассмотрим теперь решетку Ly в которой все цепи конечны. Будем говорить, что L удовлетворяет условию Жордана- Дедекинда, если для любых двух элементов а, 6 Ε L таких, что α < 6, все максимальные (а, Ь)-цепи в L имеют одинаковую длину, т. е. всегда из условий α = wo <· и\ <· ... < ит = 6, α = νο < v\ < ... <· vn = b вытекает т = п. Теорема 4.1. Любая полумодулярная решетка, в которой все цепи конечны, удовлетворяет условию Жордана- Дедекинда. Доказательство. Будем доказывать следующее утверждение: для любых а, 6 Ε L таких, что α < 6, если какая-либо максимальная (а,6)-цепь имеет длину га, то любая максимальная (а, Ь)-цепь имеет длину га. При га = 1 имеем а <Ь и утверждение очевидно. Пусть утверждение верно для любого интервала, имеющего максимальную цепь длины меньшей га, и га > 2. Рассмотрим две максимальные (а,Ь)-цепи: а = wo < и\ <· ... <· ит = 6, а = vq < v\ <·...<· vn = b. В силу предположения индукции мы можем считать, что η ^ ^ га. Если и\ = v\y to, применяя предположение инукции к
§ 4.1. Полу модулярные решетки, условие Жордана-Дедекинда 59 интервалу [ui,6], получаем т — 1 = η - 1, т. е. m = п. Пусть щ φ щ. В силу полумодулярности выполняется ui, v\ <· <щ Vv\. По предположению индукции любая максимальная (а1,Ь)-цепь имеет длину т — 1. Следовательно, любая максимальная (щ V ?;1,Ь)-цепь имеет длину m - 2. Отсюда следует, что любая максимальная (?;1,Ь)-цепь имеет длину т-1. Тогда т — 1 = η — 1, т. е. опять имеем т = п. О Далее под отношением ^· на решетке L будем понимать объединение отношения покрытия <· и отношения равенства =. В дальнейшем мы будем рассматривать решетки, обладающие наименьшим элементом, который будем называть нулем и будем обозначать через 0. Атомом будем называть элемент решетки, покрывающий ее наименьший элемент 0. Лемма 2. Пусть L — полумодулярная решетка с нулем 0. Тогда для любых u,v,w Ε L выполняется u<v—>uVw^vVw. В частности, для любого а € L и атома ρ такого, что p£af выполняется а <· α V р. Доказательство. Если υ ^ и V wt то и V w = (и V w) V ν = = vVw. Пусть υ £ u\/w. Тогда и = vA(u\/w)t так как и <·υ, и vW(uWw) = Ww. Отсюда в силу полумодулярности получаем uVw <vWw. Ώ Пусть L — полумодулярная решетка с нулем 0, в которой все цепи конечны. Через dim α будем обозначать длину максимальной (0,а)-цепи. Это определение корректно в силу теоремы 4.1. Функцию dimx будем называть функцией размерности на решетке L. Теорема 4.2. Пусть L — полумодулярная решетка с нулем 0, в которой все цепи конечны. Тогда: 1) для любых a,b Ε L dim(a Λ b) -f dim(a V b) ^ dim a -f dim 6;
60 Глава 4. Матроиды 2) решетка L модулярна в том и только в том случае, когда для любых a,b € L dim(a Л 6) + dim(a V b) = dim a + dim b. Доказательство. 1) Пусть α Λ b = u0 <· щ <·...<· um = = a. Объединяя все элементы этой цепи с 6, в силу леммы 2 получаем b = и0 V b ^ щ V b ^ ... $ ит V b = а V 6. Отсюда следует dim a — dim(a Л b) = т ^ dim(a V b) — dim 6, т.е. dim a 4- dim b ^ dim(a Л b) + dim(a V 6). 2) Если решетка модулярна, то интервалы [aAb.a] и [6,aVb] изоморфны по лемме 1. Следовательно, dim a — dim(a Л b) = dim (a V 6) — dim 6. Обратно, предположим, что для любых a,b € L выполняется равенство dim(a Л 6) -f dim(a V b) = dim a -f dim 6. Пусть, от противного, решетка L немодулярна. Тогда, как известно, она содержит Пентагон (рис. 16) в качестве подре- шетки. Для элементов Пентагона в силу нашего предположения получаем dim и + dim ν = dim с + dim a, dim и 4- dim υ = dim с + dim 6, т. е. dim a = dim 6, что невозможно. D Отметим, что неравенство из 1) называют неравенством полумодулярности.
ψ' 7.2. Конечномерные геометрические решетки и матроиды 61 ν О и Рис. 16 Пример. Пусть V — конечномерное векторное пространство над телом F. Тогда решетка Sub У подпространств пространства V — это модулярная решетка с нулем, в которой псе цепи конечны, и dimU совпадает с обычной размерностью подпространства U. Конечно, Sub У удовлетворяет условию Жордана-Дедекинда, а равенство из утверждения 2) теоремы 4.2 есть обычная формула для размерности суммы и пересечения подпространств. § 4.2. КОНЕЧНОМЕРНЫЕ ГЕОМЕТРИЧЕСКИЕ РЕШЕТКИ И МАТРОИДЫ Неодноэлементную решетку L называют конечномерной геометрической решеткой, если она: 1) полна, т.е. существуют точная нижняя и точная верхняя границы любого множества ее элементов; 2) не содержит бесконечных цепей; 3) точечно,, т.е. любой ее элемент представим в виде объединения некоторого (возможно, бесконечного) множества атомов; 4) полумодулярна. Заметим, что в силу 2) решетка L имеет наименьший и наибольший элементы, которые удобно считать соответственно точной верхней и точной нижней границей пустого множества.
62 Глава 4. Матроиды Примером конечномерной геометрической решетки может служить решетка подпространств Sub V любого конечномерного векторного пространства V над телом F. Решетка L называется решеткой с дополнениями, если она имеет наименьший элемент 0, наибольший элемент 1 и для любого и € L существует ν € L такой, что и Αν = 0, иУ ν = 1. Элемент ν называют тогда дополнением элемента и. Решетка называется решеткой с относительными дополнениями, если любой ее интервал есть решетка с дополнениями. Теорема 4.3. Любая конечномерная геометрическая решетка является решеткой с относительными дополнениями. Доказательство. Пусть [а, Ь] — интервал конечномерной геометрической решетки L и и е [а, Ь]. Среди элементов и1 е е [а, Ь] таких, что u/\v! = α (отметим, что это равенство верно при и' — а), возьмем максимальный элемент и'. Покажем, что и V и' = 6, т. е. ν! — дополнение для и в интервале [а, 6]. Пусть, от противного, uV ur < b. Возьмем атом q ^ b решетки L такой, что q £ uV ur. Такой атом существует в силу точечности решетки L. Тогда q £ и и q £ и'. Положим и" = и' V q. Очевидно, α ^ и1 V q ^ 6, т. е. и" е [а, Ь]. Так как q ^ и\ по лемме 2 получаем ν! <и' V q = и". В силу максимальности и' выполняется α < и Л и". Тогда существует атом ρ ^ и Л г/' ^ и, и" решетки L такой, что ρ £ α = и Л г/. Ясно, что ρ ^ г/, иначе из ρ ^ г/ и ρ ^ и получаем ρ ^ и Л г/ = а. Так как ρ ^ и", отсюда следует и' <· г/ V р^ и", т. е. и" = г/ V р. Тогда получаем ^w4/Vu = (w/Vp)Vu = u,V(pVu)=u,V n, что противоречит выбору д. Таким образом, и Vu' = 6 и, следовательно, г/ — дополнение для и в [a,b]. D
\\ "1.2. Конечномерные геометрические решетки и матроиды 63 Теорема 4.4. Любой интервал конечномерной геометрической решетки является конечномерной геометрической решеткой. Доказательство. Очевидно, нужно проверить лишь точеч- пость интервала. Пусть в решетке L выполняется а < с ^ Ь. Тогда с = VieiPi для некоторых атомов pi (г е I) решетки L. Очевидно, среди указанных атомов существует такой атом pi, что ρι ^ а. Будем считать, что pj £ а для jeJCIupk^a для k e I\J. Тогда по лемме 2 предыдущего раздела элементы ρf Va являются атомами в интервале [а, 6] для j € J и c = cVa = (VieiPi) Va= Уiei(Pi Va) = = (Vj6j(PiVa))Va= V^jfeVo). Пусть Ε — непустое множество. Отображение А -> {А) множества V(E) всех подмножеств множества Ε в себя называется оператором замыкания, если для любых А, В С Ε выполняется: \)АС(А); 2) А С В => (Л) С (β); 3) ((A)) = (Л). Условие 1) называется направленностью, условие 2) — монотонностью, а условие 3) — идемпотентностью оператора замыкания. Подмножество АСЕ называется замкнутым, если А = Лемма 1. Пересечение любого семейства замкнутых подмножеств замкнуто. Доказательство. Пусть Ai (г е I) — семейство замкнутых подмножеств. Тогда в силу монотонности (П^) С (Aj) = - Aj для любого j е I. Отсюда получаем (П;^) С П^, т.е. П{Аг = (C\iAi) в силу направленности оператора замыкания. D Через Subi? обозначим множество всех замкнутых подмножеств оператора замыкания на Е. Ясно, что в силу направленности Ε е SuhE.
64 Глава 4. Матроиды Следствие 1. Subi? — полная решетка относительно С. Доказательство. В Subi? существует точная нижняя граница для любого семейства элементов — это их пересечение, а также имеется наибольший элемент Ε (удобно считать, что наибольший элемент есть пересечение пустого семейства элементов). Как хорошо известно, в таком случае частично упорядоченное множество является полной решеткой (т. е. существует и точная верхняя граница для любого семейства элементов). D Заметим, что в Sub £7 операции пересечения Л и объединения V устроены следующим образом: АЛВ = АПВ и AV В = (A\JB). Пример. Пусть V — векторное пространство над телом F. Через (А) обозначим линейную оболочку множества А С V. Очевидно, А —> (А) (А С V) — оператор замыкания на V, а решетка SubV подпространств пространства V и есть решетка замкнутых подмножеств. Матроидом или комбинаторной предгеометрией М(Е) называется непустое множество Ε вместе с оператором замыкания А -> {А)(А С Е) такое, что: 4) (аксиома замены) для любых pyq € Ε и А С Ε из q # # (А) и q е (Аир) вытекает ρ е (AUq)\ 5) (аксиома существования конечного базиса) для любого АСЕ существует такое конечное множество В С А, что (В) = (А). Матроид М(Е) называется обыкновенным или комбинаторной геометрией, если 6) (0) = 0 и ({р}) = {р} для любого ре Е. В дальнейшем мы будем отождествлять множество {р} с его элементом р, что не вызовет недоразумений, и будем писать (р) = р. Замкнутые подмножества матроида М(Е) будем называть его листами или подпространствами. Ясно, что (0) — наименьший лист в решетке листов Subi? матроида М(Е). Лемма 2. Пусть А — лист матроида М(Е) и ρ е Е\А. Тогда A G (A\Jp) в решетке Sub E листов матроида М(Е).
sV 7 2 Конечномерные геометрические решетки и матроиды 65 Доказательство. Очевидно, А С (AUp). Пусть В — такой лист, что А С В С (Аир). Возьмем элемент q e В \ А. Тогда i\ ^ А — {А) и q £ (Аир). Откуда в силу аксиомы замены получаем ρ Ε (A U q) С В, т. е. Al)p С В. Следовательно, (Лир) С Б и поэтому В = (Лир). D Следствие 2. Если ρ е Ε \ (0), то (р) — атом решетки Sub Я. Теорема 4.5 (Биркгоф и Уитни). 1) Решетка листов матроида является конечномерной геометрической решеткой. 2) Пусть L — конечномерная геометрическая решетка и Ε — множество ее атомов. Для каждого АСЕ положим (А) = {реЕ\р^\/А}. Тогда множество Ε вместе с отображением А —> (А) является обыкновенным матроидом, решетка листов которого изоморфна L. Доказательство. 1) Рассмотрим решетку Sub£ листов некоторого матроида М(Е). В силу следствия 1 эта решетка полна. Она является точечной, так как A = V{(p)\p<=A\№} для любого А е Sub E и по следствию 2 элементы (р), где ρ € А \ (0), есть атомы решетки Sub E. Покажем, что решетка Sub Ε полумодулярна. Пусть А, В — листы и А П В с А. Возьмем элемент ρ е А \ (А П В) = А \ В. Тогда А = ((А П В) Up). Отсюда получаем AVB = (AUB) = (BUP) и BG(BUp) по лемме 2, т.е. ЯоЛ V£. Проверим теперь, что Sub E не содержит бесконечных цепей.
66 Глава 4. Матроиды Покажем сначала, что Subi? не имеет учетных возрастающих цепей, т. е. Sub E удовлетворяет условию обрыва возрастающих цепей. Пусть, от противного, А\ С А% С ... — возрастающая цепь листов. В силу аксиомы существования конечного базиса существует конечное множество В С \J£LX Αχ такое, что (В) = (USi *^*)· В силу конечности В для некоторого jGN выполняется В С Aj. Тогда оо Ai+1C<(J^> = <-B>CA,, что невозможно. Покажем теперь, что Subi? не имеет счетных убывающих цепей, т.е. Subi? удовлетворяет условию обрыва убывающих цепей. Пусть, от противного, А\ D А2 Э ... — убывающая цепь листов. Для каждого г € N выберем элемент сц € € Ai \ Ai+i и положим А = {αι,α2,...}. Положим также Вг = {а*,а*+1,...} для любого i 6 N. Поскольку (£?i+i) С С Ai+i, для любого г е N выполняется сц £ (#i+i)· Предположим, что at € (A\at) для некоторого t e N. Тогда at € (Si \at> и at £ (Bt+i) = (Bt\at) (здесь, очевидно, t φ 1). Отсюда следует, что существует j е 1,... ,£ — 1 такое, что at G (Bj \ at),at & (Bj+i \ at>. Преобразуя первое условие, получаем at e ((R,+i U aj) \ at) = ({Bj+1 \ at) U aj). Теперь в силу аксиомы замены заключаем, что aj e ((Bj+1\at)Uat) = (Bj+г), что невозможно. Мы установили, что at & {A\at) для любого t € N, но это противоречит аксиоме существования конечного базиса. Таким образом, Subu? удовлетворяет условию обрыва возрастающих цепей и условию обрыва убывающих цепей. Пусть Ρ — произвольная цепь из Subi£. В силу условия обрыва убывающих цепей в Ρ имеется наименьший элемент Αχ. Если Р\{А\} Φ 0, то в Р\{А{\ имеется наименьший
\N '/ 2. Конечномерные геометрические решетки и матроиды 67 элемент А2. Если Р\ {Αχ, А2} Φ 0, то в Р\ {А\, А2} имеется наименьший элемент А%. Продолжая этот процесс, мы будем «троить возрастающую цепь А\ С А2 С As С В силу условия обрыва возрастающих цепей процесс построения возрастающей цепи завершится на некотором шаге, т.е. цепь Ρ конечна. Итак, в решетке Subi? нет бесконечных цепей и мы завершили доказательство утверждения 1). 2) Легко проверить, что отображение А -> {А)(А С Е) является оператором замыкания на множестве атомов Ε конечномерной геометрической решетки L. Заметим также, что подмножество из Ε замкнуто тогда и только тогда, когда оно состоит из всех атомов, лежащих под некоторым элементом решетки L. Покажем, что выполняется аксиома замены. Пусть q # (А) и q e (A\Jp) для некоторых р, q е Ε и А С Е. Тогда в решетке L имеем q £ \/А и q ^ (VA) V р. Из этих условий нытекает ρ £ VA Тогда в силу полумодулярности и леммы 2 из предыдущего раздела получаем VA<(\/A)VpH У А <{УА) Vq^ (VA)Vp. Следовательно, (WA) V q = (\Λ4) У ρ и поэтому ρ ^ {УА) V д, т.е. ре (A\Jq). Проверим теперь аксиому существования конечного базиса. Пусть А С Ε и А Ф ф. В интервале [О, \Л4] будем строить возрастающую цепь. Пусть для некоторого г € N уже построена цепь О = wo <· и\ <· ... < щ-ι и щ-\ < Wl. Очевидно, существует атом pi е А такой, что рг £ щ-\. Положим щ = щ-1 Vpi. Ясно, что щ-1 <щ ^ Wl, и мы получаем цепь О = uq <· и\ <· ... <· щ-ι <· щ. Так как в решетке L нет бесконечных цепей, указанный процесс построения возрастающей цепи завершится на некотором шаге и мы получим цепь О = и0 <·щ <· ... <ип = VА,
68 Глава 4. Матроиды где η е N. Положим В = {р\,... ,рп}· Мы имеем В С А и У А = ип = un_! V рп = un_2 V pn_i V рп = = ... = Ρι ν · · · V рп = У В. Следовательно, (А) = (В) и мы проверили выполнение аксиомы существования конечного базиса. Итак, множество Ε вместе с указанным оператором замыкания образует матроид. Поскольку {Щ = {р£Е\р^ V0 = O} = 0 и (p) = {qeE\q^p}=p, этот матроид является обыкновенным. Рассмотрим отображение ф(и) = {реЕ\р^и} решетки L в решетку Subi£. Очевидно, это отображение сю- рьективно. Оно инъективно, поскольку в силу точечности решетки L выполняется и = Уф(и) для любого и е L. Следовательно, φ — биекция L на Subi£. Если u\ ^ U2 в L, то ф(и{) С ф(и2) и, обратно, если ф{и\) С φ{ν,2), ТО Щ = Уф(щ) ^ νφ{ν>2) = W2- Таким образом, φ — изоморфизм решетки L на решетку Sub Я. D Заметим, что доказанная теорема говорит о том, что существует взаимно однозначное соответствие между конечномерными геометрическими решетками и обыкновенными матрои- дами. В решетке Subi? листов матроида М(Е) в силу ее полумодулярности и отсутствия бесконечных цепей определена функция размерности. Листы размерности 1, 2 и 3 будем называть соответственно точками, прямыми и плоскостями. Пример. Пусть V — n-мерное векторное пространство над телом F. Решетка SubV подпространств пространства V является конечномерной геометрической решеткой, поэтому по
sN Ι 2 Конечномерные геометрические решетки и матроиды 69 к'ореме Биркгофа-Уитни ей отвечает некоторый обыкновенный матроид, который называют векторной проективной геометрией PG(n — 1,F) над телом F. В заключение этого раздела обсудим без доказательства < гроение модулярных конечномерных геометрических реше- 1ок. Пусть U — некоторое непустое множество элементов, называемых точками, а С — некоторое семейство подмножеств на U, называемых прямыми. Множество точек U и прямых С называется проективной геометрией, если: 1) через любые две различные точки проходит точно одна прямая; 2) любая прямая содержит не менее трех различных точек; 3) (аксиома Паша) если три точки а,Ь,с образуют треугольник, т. е. не лежат на одной прямой, и некоторая прямая / пересекает две стороны треугольника, но не в точках а, 6, с, го она пересекает и третью сторону треугольника. Рис. 17 Подпространством А проективной геометрии называется такое ее множество точек, которое вместе с любыми двумя различными точками из А содержит и прямую, проходящую через них. Введем понятие g-размерности или геометрической размерности для подпространств проективной геометрии. По определению точки имеют ^-размерность 0, а прямые — ^-размерность 1. Пусть А — произвольное подпространство ^-размерности А: и ρ — точка, не лежащая в А. Объединим все прямые, проходящие через ρ и точку из А. Получим, как
70 Глава 4. Матроиды нетрудно установить, подпространство. Это подпространство по определению имеет ^-размерность fc-fl. Можно проверить, что понятие ^-размерности введено корректно. Добавим к нашим трем аксиомам еще одну аксиому: 4) U имеет конечную ^-размерность. Если U имеет ^-размерность т, то говорят, что проективная геометрия (W, С) имеет ^-размерность га. Пересечение любого семейства подпространств проективной геометрии, очевидно, является подпространством. Поэтому множество SubW всех подпространств проективной геометрии (U, С) является полной решеткой относительно теоретико- множественного включения. Нетрудно доказать следующее утверждение. Теорема 4.6. SubU — модулярная конечномерная геометрическая решетка для любой проективной геометрии {U, С). Теорема 4.7. Любая проективная геометрия д-размер- ности га > 2 изоморфна векторной проективной геометрии PG(m, F) для некоторого тела F. Для проективных плоскостей, т. е. проективных геометрий ^-размерности 2, справедлива следующая Теорема 4.8. Проективная плоскость изоморфна векторной проективной геометрии PG(2,F) для некоторого тела F тогда и только тогда, когда она удовлетворяет аксиоме Дезарга: если два треугольника 01,02,03 и 6ι,&2,ί>3 перспективны относительно некоторой точки ν (т. е. для любого г = 1,2,3 прямая, проходящая через а^ и bif проходит и через v)f то точки пересечения соответственных сторон треугольника лежат на некоторой прямой I (рис. 18). Заметим, что если для обычной евклидовой плоскости, во-первых, расширить множество точек, добавив семейство несобственных точек по одной для каждого пучка параллельных прямых, во-вторых, расширить каждую прямую, добавив
\S 7 2. Конечномерные геометрические решетки и матроиды 71 Рис. 18 несобственную точку пучка параллельных ей прямых, и, наконец, в-третьих, расширить множество прямых, добавив одну несобственную прямую, состоящую из всех несобственных точек, то получим дезаргову (т. е. удовлетворяющую аксиоме Дезарга) проективную плоскость. Рис. 19 служит иллюстрацией для этого построения. Теорема 4.9 (Биркгоф). Модулярные конечномерные геометрические решетки исчерпываются прямыми произведениями конечного числа решеток вида SubW для проективных геометрий (W, £). Отметим, что в силу предыдущих теорем фигурирующие чдесь прямые множители SubW представляют собой решетки подпространств конечномерных векторных пространств над телами, за исключением случаев, когда (W,£) — недезарговы проективные плоскости. К настоящему времени еще не получено полной классификации недезарговых проективных плоскостей. Отметим также, что дистрибутивные конечномерные геометрические решетки исчерпываются конечными булевыми алгебрами.
72 Глава 4. Матроиды **]/ гК \ N. 1 /γ8 Pwc. 19 § 4.3. ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ МАТРОИДОВ Примем сначала важное соглашение: Всюду в дальнейшем мы будем рассматривать только конечные матроиды. Таким образом, матроид М(Е) для нас — это конечное непустое множество Ε вместе с отображением А -> (А) множества V(E) в себя, удовлетворяющее аксиомам: 1) (направленность) А С (А) для любого А С Е\ 2) (монотонность) для любых А,ВСЕ АСВ=*(А)С (В); 3) (идемпотентность) ((A)) = (А) для любого А С Е; 4) (аксиома замены) для любых p,qeEnACE qe(A),qe(AUp)=*pe(AUq). Матроид называется обыкновенным, если он удовлетворяет следующей дополнительной аксиоме: 5) (0) = 0 и (р) = ρ для любого ρ е Е.
fl -1.3. Основные понятия теории матроидов 73 Из доказанного ранее вытекает, что решетка Sub E листов (конечного) матроида М(Е) является конечной геометрической решеткой, т.е. она: 1) конечна; 2) точечна (любой ее элемент есть объединение конечного числа атомов); 3) полумодулярна. Перейдем теперь к рассмотрению основных понятий теории матроидов. Пусть Μ = М(Е) — произвольный матроид. Множество Л С Ε называется независимым, если ρ & (А \р) для любого l> G А (в противном случае множество А называется зависимым). Через Ind(M) или просто Ind будем обозначать множество всех независимых подмножеств из Е. Отметим, что Й G Ind. Лемма 1. 1) Любое подмножество независимого множества независимо. 2) Пусть А — независимо и ρ е Е\А. Тогда множество AUp независимо в том и только в том случае, когда ρ £ 4(A). Доказательство. Утверждение 1) очевидно. 2) Необходимость условия следует из определения. Обратно, пусть ρ & (А). Возьмем q е А. Если q € ((А \ q) Up), то на основании аксиомы замены и условия q $ (A\q) получаем ρ £ Ε ((A\q)\Jq) = (А). Таким образом, q g ((A\q)\Jp) и, очевидно, р# ((A U р) \ р), т. е. A U ρ — независимое множество. D Пусть А — произвольное подмножество из Е. Любое максимальное независимое подмножество В, содержащееся в А, будем называть базой множества А. Базы множества Ε будем называть базами матроида М. Через Bs(M) или просто Bs будем обозначать совокупность всех баз матроида М. Минимальные зависимые подмножества из Ε будем называть циклами матроида М. Через Сс1(М) или просто Ccl будем обозначать множество всех циклов матроида М. Лемма 2. Для любого подмножества А из Ε выполняется:
74 Глава 4. Матроиды 1) (В) = (А) для любой базы В множества А; 2) если I — независимое множество из А и В — база множества А, то \Ι\ ^ \Β\; β частности все базы множества А равномощны; 3) любое независимое подмножество, содержащееся в А, может быть расширено до базы множества А. Доказательство. 1) Пусть В — база множества А. Если ρ е А\ В, το В U ρ зависимо и поэтому ρ е (В) в силу леммы 1. Следовательно, А С (В), т.е. (А) С (В) С (А). Откуда вытекает равенство (А) = (В). 2) Если / С Ву то, очевидно, |/| ^ \В\. Пусть ρλ е 1\В. Тогда pi ^ (J\pi) и множество В U р\ зависимо. По лемме 1 имеем р\ е (В). Следовательно, В £ (Ι\ρι). Тогда существует qi € В такой, что q\ # (1\р\). В силу леммы 1 множество I\ = (I\pi)Uq\ независимо и |/ι| = |/|, \1± Г)В\ > > \1Г\В\. Продолжая действовать аналогичным образом, мы найдем независимое множество It Я В такое, что |/| = = \ь\ < \в\. 3) Очевидно. D Рангом г (А) подмножества А из Ε называется общая мощность всех баз из А. Число г = г(М) = г(Е) называется рангом матроида М(Е). Лемма 3. Для любого подмножества А из Ε выполняется: \)0^г(А)^\А\; 2) г(А) = \А\ Ф> А — независимое множество; 3) г(А) — г((А)) = dim((i4)), где dim — функция размерности в решетке Sub Ε листов матроида М. Доказательство. 1) и 2) очевидны. 3) Пусть В = {6ι,..., bk} — база множества А. По лемме 2 имеем (В) = (А). Если ρ е {А) \ В, то ρ Ε (В) и множество Вир зависимо в силу леммы 1. Следовательно, В — база для (А) и мы получаем г(А) = г((А)) = А:. В силу независимости В для любого г = Ι,.,.,Α — 1 выполняется bi+i & (bi,...,b<>.
ί 7 3. Основные понятия теории матроидов 75 1огда, применяя лемму 2 из предыдущего раздела, получаем немочку покрытий (0)G(b1)G(bbb2)G...G(bb...,bfc) = (A), ι с. к = dim((;4)) в решетке Sub Я. D Пусть А — лист матроида М. Говорят, что множество ПСА является порождающим для листа А, если (Я) = А. 11орождающие множества листа Ε называются порождающими множествами матроида М. Лемма 4. Минимальные порождающие множества листа А и только они являются базами для А. Доказательство. =4>. Пусть А = (Я) и Я — база для Я. Так как г(Н) = г(А), В — база и для А. Тогда (Я) = А и, следовательно, Я = Я в силу минимальности Я. -Ф=. Пусть В — база для листа А. Тогда А = (Я). Если Я G С Я и (Я) = А, то г(А) = г(Н) < г(В), что противоречиво. D Лемма 5. Для любого А С Ε и ρ е Ε выполняется: 1) ρ е (А) <=> ρ е А или существует I С А такое, что I € Ind и IU ρ & Ind; 2) ρ е (А) <=> ρ е А или существует С € Ccl такое, что peCCAUp; 3) ре (А) <& г (A Up) = г (А). Доказательство. 1) Пусть ρ е {А) \ А и Я — база для А. В силу леммы 3 имеем r(A) = r((A))t поэтому Я — база и для (А). Следовательно, Я Up £ Ind и, кроме того, Я Ε Ind. Обратно, пусть I С A,I e Ind и /Up ^ Ind. Множество /Up зависимо, поэтому в силу леммы 1 имеем ρ Ε (/) С (А). 1) и 2) эквивалентные утверждения. Это легко заметить, если вспомнить определение цикла. 3) Так как всегда (A Up) 2 (А), получаем ρ е (А) эквивалентно (A Up) = (A)t что, в свою очередь, эквивалентно г (Л Up) = г (А) в силу леммы 3. D
76 Глава 4. Матроиды § 4.4. РАЗЛИЧНЫЕ АКСИОМАТИЗАЦИИ МАТРОИДОВ Теорема 4.10 (Аксиомы независимости). 1) Пусть М(Е) — (конечный) матроид и Ind — семейство его независимых множеств. Тогда: (1.1) 0 е Ind; X С I e Ind влечет X е Ind для любого X; (1.2) для любых J, J G Ind таких, что \I\ < \J\, существует ρ £ J\I, для которого /Up € Ind; (1.2') для любого АСЕ все максимальные в А независимые подмножества равномощны. 2) Обратно, пусть семейство X подмножеств конечного непустого множества Ε удовлетворяет условиям (1.1), (1.2) или, что эквивалентно, условиям (1.1), (1.2'), где X играет роль Ind. Тогда X совпадает с семейством независимых множеств однозначно определенного матроида на Е. Доказательство. 1) Свойство (1.1) было уже отмечено в лемме 1 из предыдущего раздела, а свойство (1.2') — в лемме 2. Применив (1.2') к /UJ, где /, J e Ind и |/| < |J|, получим (1.2). 2) Обратно, пусть X удовлетворяет условию (1.1), где вместо Ind фигурирует I. Легко видеть, что тогда (1.2) эквивалентно (1.2'). Поэтому будем считать, что выполняются все три свойства (1.1), (1.2) и (1.2'). Общую мощность максимальных I-подмножеств из А назовем Х-рангом множества А и обозначим через Хг(А). Зададим отображение А —> {А)(А С Е), полагая для произвольного ρ е Ε: ρ G (А) тогда и только тогда, когда ρ е А или существует I С А такое, что I еХ н I\Jp &X. Заметим, что в силу леммы 5 предыдущего раздела искомый оператор замыкания обязан быть таким. Свойства направленности и монотонности для заданного отображения очевидны. Прежде чем доказывать идемпотентность покажем, что для любого АСЕ выполняется равенство Ir(A)=Xr((A)).
\V 1.4. Различные аксиоматизации матроидов 77 Пусть, от противного, существуют такие /, J € I, что I С A, J С (А) и \I\=lr(A)<Xr((A)) = \J\. Гогда в силу (1.2) найдется ρ G J \/, для которого /Up G J. Учитывая максимальность /, получаем ρ G (А) \ А. По определению {А) существует такое /' С А, что /'gJ,/'up£J. Очевидно, в силу (1.1) можно считать, что /' является максимальным Т-множеством из А, т.е. |/'| = |/|. Тогда Хг(А) = \Г\ < |/Up|. По условию (1.2) существует q G (/Up) \/', для которого /' U q G X. Если ς G /, то /' U q С А, что противоречит максимальности /'. Если q = ρ, то Г Up G I, что противоречит выбору множества /'. Таким образом, Хг(А) = Хг((А)). Докажем идемпотентность нашего отображения, т.е. проверим, что ((A)) = (А) для любого АСЕ. Пусть, от противного, существует ρ £ ((.А)) \ (А). Возьмем некоторое максимальное Т-множество В из А. Так как ρ ^ ί/ (Л), по определению замыкания (А) выполняется В Up £ J. Следовательно, Xr((A))=Xr(((A)))> ^ \BUp\=Xr(A) + l=Ir((A)) + 1, что невозможно. Покажем теперь, что выполняется аксиома замены. Пусть А С Еу p,q ξ Е> q & (А) и q G (A Up). Тогда по определению замыкания существует / G I, для которого / С A\Jp и IUq & (/. X. Так как q g (А), мы имеем pG/,(/\p)UgGJ. Положим /' = (/ \ р) U q. Тогда /' G X и /' U p ^ J, т. е. 7iG(i4Ug).
78 Глава 4. Матроиды Итак, наш оператор замыкания задает матроид Μ на Е. Наконец, А е X выполняется тогда и только тогда, когда ρ & (А \ р) для любого ρ € Ау что, в свою очередь, эквивалентно условию А е Ind(M). Таким образом, I = Ind(M). D Условия (1.1) и (1.2) называют аксиомами независимости. Теорема 4.11 (Аксиомы баз). 1) Пусть М(Е) — (конечный) матроид и Bs — семейство его баз. Тогда: (B.I) Bs φ 0; если ВиВ2 е Bs и Вх φ В2, то Вх g B2 и В2 £ Вь- (В.2) если В\,В2 е Bs, то для любого b\ e В\ существует Ь2 £ В2 такой, что (B\b\)\Jb2 Ε Bs. 2) Обратно, пусть семейство В подмножеств конечного непустого множества Ε удовлетворяет условиям (В.1) и (В.2), где В играет роль Bs. Тогда В является семейством баз однозначно определенного матроида на Е. Доказательство. 1) Свойство (В.1) очевидно, а свойство (В.2) вытекает из (1.2) и условия равномощности баз. 2) Обратно, пусть семейство В удовлетворяет аксиомам (В.1) и (В.2), где вместо Bs фигурирует В. Покажем сначала, что все β-множества равномощны. Пусть Вг,В2 еВ, \Βχ\ =t и Βι = {6ι,62,...Λ}. По аксиоме (В.2) существует с\ е В2 такой, что {сь&2,...Л}еВ. Здесь с\ $. {&2,.. -, 6*} в силу условия (В.1). Аналогично, существует с2 € В2 такой, что {с1,С2,Ьз,.--Л} €В и с2 £ {ci, Ьз, · · ·»М- Продолжая этот процесс, получим {cbc2,...>ct}eS
\\ У '/. Различные аксиоматизации матроидов 79 млн некоторых попарно различных элементов ci,C2,...,ct Ε • И2 В силу аксиомы (В.1) получаем {ci,C2,... ,ct} = В2, ι ι·. |Β2| = * = |Βι|. Подмножество А из Е будем называть В-независимым, π· л и оно содержится в некотором β-множестве. Ясно, что β- миожества — это максимальные β-независимые множества. Обозначим через X совокупность всех β-независимых множеств. Заметим, что семейство X удовлетворяет аксиоме независимости (1.1). Для завершения доказательства теоремы достаточно проверить, что семейство X удовлетворяет аксиоме (1.2) и воспользоваться теоремой 1. Пусть /, J е X и |/| < \J\. Зафиксируем β-множество В2, содержащее J. Среди β-множеств, содержащих /, выберем такое β-множество В\у для которого пересечение В\ Г)В2 содержит наибольшее возможное число элементов. Покажем, что В\\1 С В2. Действительно, если существует Ь\ € В\\1 такой, что &ι ^ В2, то по аксиоме (В.2) существует b2 e B2t для которого B = {Bi\bi)Ub2 еВ и Ь\ φ b2, так как 6ι ^ В2у гЬ2е В2. Тогда \ВГ\В2\ > \ΒιΠΒ2\, что невозможно, поскольку I С В. Таким образом, В\ \ /, J С В2, причем \Bi\I\ + \J\ = \Bl\-\I\ + \J\>\B1\ = \B2\. Следовательно, существует ρ Ε (Βχ \Ι)Γ) J. Так как I Up С В\ и ρ е J\I, элемент ρ является искомым. D Заметим, что условие (В.2) называют аксиомой Штейни- ца о замене. Примеры. 1) Пусть Ε = {vi,.. . ,г;т} — некоторое множество векторов векторного пространства V над телом F. Рассмотрим множество всех максимальных линейно независимых подмножеств из Е. Оно удовлетворяет аксиомам баз (В.1) и (В.2), т.е. мы имеем матроид на Ε с таким семейством баз. Этот матроид называют векторным матроидом над телом F.
80 Глава 4. Матроиды 2) Пусть G — произвольный ненулевой (п,т)-граф. Построим матроид циклов графа G, который будем обозначать через M(G). В качестве основного множества Ε возьмем EG, а в качестве баз этого матроида — остовы (точнее, каждая база — это множество всех ребер некоторого остова). Аксиома (В.1) очевидна, а аксиома (В.2) выполняется в силу леммы 4 из § 2.1. Ясно, что в этом матроиде независимыми множествами будут ациклические множества ребер, а циклами — обычные циклы графа. Пусть М(Е) — произвольный матроид на конечном множестве Е. Возьмем А С Е. В качестве системы независимых множеств на А рассмотрим независимые множества исходного матроида, содержащиеся в А. Ясно, что на А мы получили матроид, который обозначают через М(А) и называют под- матроидом исходного матроида. Пусть Е\ — конечное множество и φ — сюрьективное отображение Е\ на Е. Определим следующим образом матроид Μ (Ει) на множестве Е\. Пусть г — ранг матроида М(Е). Семейство элементов {αι,...,αΓ} С Ει назовем базой, если {ф(а\),...,ф(аг)} — база матроида М(Е). Очевидно, аксиомы баз выполняются, и мы получили матроид М(Е\). При переходе от β κ Ει каждый элемент α из Ε мы заменяем на некоторое конечное множество элементов (составляющих полный прообраз элемента α относительно ф). Для того чтобы получить произвольную базу матроида Μ (Ει) мы можем поступить следующим образом: берем сначала базу Ьь..., Ьг матроида М(Е), а затем в полных прообразах элементов 6i,...,6r берем соответственно по одному элементу αι,...,αΓ. Аналогично устроены и независимые множества матроида Μ (Ει). Можно мыслить себе, что матроид М(Е{) получен из матроида М(Е) с помощью «размножения» элементов, т.е. заменой каждого элемента из Ε на некоторое число его копий. Поэтому матроид Μ(Е\) будем называть раздуванием матроида М(Е). Пусть V — векторное пространство над телом F. Возьмем некоторую систему векторов vi,...,i;m из V (возможно, с повторениями векторов). Построим матроид М, отвечающий
§ 4.4. Различные аксиоматизации матроидов 81 этой системе векторов. Матроид Μ будет иметь т элементов. Для простоты мы можем считать, что элементами матроида Μ являются элементы vi,...,vm, т.е. все они различны как элементы матроида М, но некоторые из них могут совпадать как элементы векторного пространства V. В качестве баз возьмем все максимальные линейно независимые подсистемы из vi»...,vm. Мы получили матроид М, который, очевидно, является раздуванием некоторого векторного матроида над телом F. В дальнейшем раздувание векторного матроида над телом F также будем называть векторным матроидом над телом F. Пусть А = ( «11 «12 ·-· «lm \ «21 «22 -·. «2т \ «nl «п2 ·.. Oinm J — некоторая матрица над телом F. Строки матрицу. А являются элементами пространства векторов-строк Fm. Поэтому матрице А отвечает векторный матроид над телом F, состоящий из η элементов — строк матрицы А. Этот матроид называют матроидом строк матрицы А. Отметим, что здесь строки с разными номерами являются разными элементами матроида, хотя некоторые из них могут совпадать как элементы пространства Fm. Аналогично определяется матроид столбцов матрицы А. Теорема 4.12 (Ранговые аксиомы). 1) Пусть М(Е) — (конечный) матроид иг — его ранговая функция из V(E) в N U {0}. Тогда для любых А, В СЕ выполняется: (г.1)0<г(А)<|А|; (r.2) ACB-* г(А) ζ г(В); (г.З) г(А ПВ) + r{A U В) ζ г(А) + г(В). 2) Обратно, пусть некоторая функция τ из V(E) β Ν U {0}, где Е — конечное непустое множество, удовлетворяет условиям (г.1), (г.2) и (г.З). Тогда она является ранговой функцией однозначно определенного матроида на Е.
82 Глава 4. Матроиды Доказательство. 1) Свойства (г.1) и (г.2) очевидны. Докажем (г.З). Ясно, что А П В С (А) П (В) и A U В С (Л) V (В). Используя неравенство полумодулярности, которое выполняется в решетке листов, получаем г(А ПВ)+ r{A U В) < г((А) П (Б)) + г ((А) V (Б)) < ^r((A))+r((B))=r(A) + r(B). 2) Обратно, пусть некоторая функция τ из Я(£) в N U U{0}, где Ε — конечное непустое множество, удовлетворяет условиям (г.1), (г.2) и (г.З). Подмножество / С Ε назовем τ-независимым, если выполняется τ(Ι) = \1\. Обозначим через X множество всех т-независимых подмножеств из Е. В силу (г.1) выполняется т(0) = 0, т. е. 0 € X. Докажем, что семейство X удовлетворяет аксиомам независимости (1.1) и (1.20. Сначала проверим аксиому (1.1). Пусть / G X и X С /. Предположим, от противного, что т(Х) < \Х\. Тогда, используя (г.З) и (г.1), получаем |/| = т(1) = т(Х U (1\Х)) < т(Х) + т(1\Х) - т(0) < <|X| + |/\X| = |/|f что невозможно. Следовательно, т(Х) = |Х|, т. е. X € X. Прежде чем перейти к проверке аксиомы (1.2'), докажем следующее вспомогательное утверждение. Пусть В — максимальное т-независимое подмножество множества АСЕ. Тогда т(А) = \В\. Если А = В, то т(А) = т(В) = |£?| в силу т-независимо- сти Б. Пусть В С An А\В = {pi,... ,pt}· В силу максимальности В для любого г = 1,..., t множество ΒΌρι не является т-независимым, поэтому |В| = т(В) < т(В U jh) < \B\Jpi\ = \В\ + 1. Отсюда следует, что τ(ΒΌρι) = |2?|.
\V 4 4. Различные аксиоматизации матроидов 83 Предположим, что r(B\Jp\ U· · -Up.,·) = \В\ для некоторого /-1,...,£-1. Тогда, применяя (г.2) и (г.З), получаем |£| = τ(Β) ζ т(В U рх U · · · U pj+1) < < т(В Upi U · · · Up,·) + r(5Upi+1) - т(В) = = |Я| + |Я|-|Я| = |Я|, т.е. r(BUpiU---Upi+i) = |B|. Теперь из доказанного вытекает, что г (А) = т(В Upi U ... ■■•Upt) = |B|. Отметим, что в силу вспомогательного утверждения все максимальные т-независимые подмножества из А С Ε имеют мощность, равную т(А), т. е. для τ выполняется аксиома (1.2'). Итак, мы установили справедливость для Τ аксиомы (1.2'). Следовательно, семейство I является семейством независимых множеств некоторого матроида М(Е) на множестве Е. Осталось проверить, что исходная функция τ совпадает с ранговой функцией матроида М(Е). Для любой базы В произвольного множества А С Ε в силу вспомогательного утверждения имеем т(А) = В = г (А), откуда вытекает, что г совпадает с г. Теорема доказана. D Теорема 4.13 (Аксиомы циклов). 1) Пусть М(Е) — (конечный) матроид и Ccl — семейство его циклов. Тогда: (С.1) 0 g Ccl; если Сь С2 € Ccl и Сг φ С2, то Сх % С2 и С2 г Сц (С.2) если С\,С2 е Ccl, С\ φ С2 и ρ Ε С\ П С2, то суще- ствует С е Ccl такой, что С С (Ci U С2) \р. 2) Обратно, пусть семейство С подмножеств конечного непустого множества Ε удовлетворяет условиям (С.1) и (С.2), где вместо Ccl фигурирует С. Тогда семейство С совпадает с семейством циклов однозначно определенного матроида на Е. Доказательство. 1) Свойство (С.1) очевидно вытекает из определения цикла.
84 Глава 4. Матроиды Для доказательства (С.2) достаточно проверить, что множество D = (С\ UC2) \р зависимо (тогда оно содержит минимальное зависимое множество — цикл). Так как D С С\ UC2, мы получаем r(D) < r(Ci U С2) < r(Ci) + г(С2) - г(Сх П С2) = = |d| - 1 + \С2\ - 1 - \d П С2\ = \Ci U С2| - 2 < <|duC2|-l = |Z)|, т.е. Ζ) — зависимое множество. 2) Обратно, пусть семейство С удовлетворяет условию теоремы. Множество ICE назовем С-независимым, если оно не содержит ни одного из множеств С € С. Через X обозначим семейство всех С-независимых множеств, содержащихся в Е. Проверим, что семейство С удовлетворяет аксиомам независимости (1.1) и (1.2). Поскольку 0 £ С, имеем 0 е X и аксиома (1.1), очевидно, выполняется. Проверим справедливость аксиомы (1.2) для семейства X. Предположим, что существуют множества /, J e X такие, что |/| < |J|, для которых (1.2) неверно. Среди всех таких пар /, J выберем ту, у которой мощность |/ U J\ минимальна. Положим J \ I = {pi,...,pt}. Если t = 1, то, очевидно, / С J и утверждение (1.2) выполняется. Поэтому имеем t ^ 2. В силу нашего предположения I Dpi & X для любого г = = 1,... ,ί. Следовательно, существует Ci G С такое, что С* С С /ирг. и в силу С-независимости множества / имеем pi e € Сг для любого г = 1,..., t. Ясно, что множества C\,...,Ct попарно различны. Рассмотрим множество С\. Для него верно р\ е С\ С /и Upi. В силу С-независимости J существует q\ G I\J такой, что q\ еС\. Рассмотрим теперь множество (I\q\) Upi. Если (/ \ q\) \Jp\ & Τ, то существует С" е С, для которого р\ е С С (/ \ qi) Upi, и, следовательно, в силу (С.2) существует такой С" е С, что C"C(C1UC')\p1CI.
\S <l 4 Различные аксиоматизации матроидов 85 11ришли к противоречию с условием I el. Пусть (/\<7i)Upi Gl. Заметим, что |((/\gi)Upi)UJ|<|/UJ|. Поэтому в силу выбора пары /, J для пары (/\gi)Upi,J существует элемент pj, где j ^ 2, такой, что (I\qi)UPlUPjel. Возьмем множество Cj е С. Для него выполняется pj € Cj С <* /Up,·. Если91 <£Cj, το Cj С (I\qi)Upj ς(/\9ι)υριυρ,·, что невозможно. Следовательно, q\ Ε CjOCi и Cj ^ Ci. Тогда no аксиоме (С.2) существует С Ε С, для которого С С (G, Ud) \*1 С (С, \gi) U (С! \Я1) С С((/\«1)ир,-)и((/\«1)иЛ) = - = (/\<7i)UpiUp,£j, что невозможно. Итак, семейство I удовлетворяет аксиомам независимости (1.1) и (1.2). Следовательно, существует матроид М(Е) на множестве Е, для которого семейство I является семейством Ind независимых множеств. Из определения С-независимости легко следует, что семейство С совпадает с множеством Ccl циклов матроида М(Е). Теорема доказана. D Следствие 1. Пусть / — произвольное независимое множество матроида М(Е) и ре Е. Тогда /Up содержит не более одного цикла. Доказательство. Пусть в /Up содержится два различных цикла С\ и Сг. Очевидно, ρ е С\ Π Съ в силу независимости множества /. Тогда по аксиоме (С.2) существует цикл С такой, что СС(СхиС2)\рС/, что невозможно. D Следствие 2. Для любой базы В матроида М(Е) и любого ρ € Е\В множество В Up содержит точно один цикл и этот цикл проходит через р.
86 Глава 4. Матроиды § 4.5. ДВОЙСТВЕННЫЙ МАТРОИД Пусть Μ = М(Е) — произвольный матроид. Для X С Ε через X будем обозначать, как обычно, теоретико-множественное дополнение, т.е. X = Ε \JC. Для произвольной базы В € Bs матроида Μ множество В будем называть его коба- зой. Через Bs* обозначим множество всех кобаз матроида М, т.е. Bs* = {J3|£eBs}. Теорема 4.14. Множество Bs* всех кобаз матроида удовлетворяет аксиомам баз (В.1) и (В.2). Доказательство. Поскольку для любых Χ,Υ С Ε условия X С Υ и X Э Υ эквивалентны, аксиома (В.1), очевидно, выполняется для Bs*. Пусть теперь В\ и В2 — две кобазы и ρ £ В\. Так как ρ & В\, в множестве В\ U ρ имеется точно один цикл С. Поскольку цикл С не лежит в В2, существует q £ С Π Β2. Множество (В\ Up) \ q не содержит циклов, так как мы разрушили единственный цикл, удалив элемент q. Поэтому это множество независимо и его мощность равна мощности базы В\. Следовательно, (В\ Vp)\q — база. Тогда для соответствующей кобазы выполняется (Bi Up)\q = (£i Up) Uq = (Bi\p)\Jq, где q G B2. Таким образом, мы проверили аксиому Штейница о замене для кобаз. D В силу доказанной теоремы семейство кобаз Bs* задает на Ε матроид, в котором исходные кобазы играют роль баз. Этот матроид называется двойственным к матроиду Μ и обозначается через М* = М*(Е). Конечно, (М*)* = М. Зависимые и независимые множества, циклы матроида М* называются соответственно козависимыми и конезависимы- ми множествами, коциклами матроида М. Ранговая функция матроида М* называется коранговой функцией матроида Μ и обозначается через г*. Очевидно, г(М)+г*(М) = \Е\.
§ 4.5. Двойственный матроид 87 Пусть имеется некоторое утверждение о произвольном матроиде. Если в нем заменить все используемые матроид- ные понятия на соответствующие копонятия и наоборот, то мы получим утверждение, которое называется двойственным к исходному утверждению. Очевидно справедлив Принцип двойственности. Если некоторое утверждение верно для любого матроида, то двойственное к нему утверждение также верно для любого матроида. Следующая лемма легко вытекает из определений. Лемма 1. Произвольное подмножество элементов матроида зависимо тогда и только тогда, когда оно имеет непустое пересечение с каждой кобазой. В силу принципа двойственности верно следующее двойственное утверждение. Лемма 2. Произвольное подмножество элементов матроида козависимо тогда и только тогда, когда оно имеет непустое пересечение с каждой базой. Лемма 3. Для любого непустого независимого множества ICE матроида Μ существует такой коцикл С*, что |/пС*| = 1. Доказательство. Множество / можно продолжить до некоторой базы В. Возьмем pel. Тогда В U ρ содержит точно один коцикл С*, для которого выполняется С* Π В = = {р} = С*П1. Π Лемма 4. Для любого цикла С и любого коцикла С* справедливо условие \CnC*\il. Доказательство. Предположим, от противного, что С Π Π С* = {ρ}. Поскольку в силу леммы 2 коцикл С* — это минимальное подмножество из Е, имеющее непустое пересечение с каждой базой, множество С — это максимальное подмножество из Е, не содержащее баз. Следовательно, С Up
88 Глава 4. Матроиды содержит некоторую базу В. Множество С \ ρ независимо и лежит в С Up. По аксиоме независимости (1.2') существует база В\ такая, что С\рСВх С С* Up (поскольку С Up содержит базу В, любое максимальное независимое подмножество из С U ρ является базой матроида). Так как С не содержит баз, имеем ρ е В\. Следовательно, С С В\, что невозможно. D Следующее утверждение нам понадобится в дальнейшем. Теорема 4.15. Подмножество X С Ε является циклом матроида Μ тогда и только тогда, когда X есть минимальное множество среди непустых подмножеств из Е, удовлетворяющих свойству: \χ η С*\ Φ 1 для любого цикла С*. Доказательство. Если X является циклом матроида, то силу леммы 4 он удовлетворяет требуемому свойству, а в силу леммы 3 имеет место необходимая минимальность. Обратно, пусть X — минимальное множество среди непустых подмножеств из Е, удовлетворяющих указанному свойству. В силу леммы 3 множество X зависимо и, следовательно, содержит некоторый цикл С. На основании леммы 4 и минимальности X получаем X = С. D Если на конечном непустом множестве Ε в качестве единственной базы взять множество Е, то возникнет, очевидно, матроид, который называют свободным или дискретным мат- роидом на Е. Здесь Ind = V(E), r(A) = \А\ (А С Е) и Ccl = 0. Матроид на Е, двойственный к свободному матроиду, называется тривиальным матроидом. Он имеет единственное независимое множество и единственную базу — пустое множество, поэтому г(А) = 0 для любого АСЕ. Его циклами являются одноэлементные подмножества из Е.
ψ 7 5. Двойственный матроид 89 Пусть G — произвольный ненулевой (п, га, &)-граф. Рассмотрим матроид циклов Μ = M(G) графа G на множестве Ε = EG. Базами этого матроида будут множества ребер ι рафа, составляющие его остовы. Очевидно, ранг матроида г(М) = п — к есть ранг графа G, а его коранг г*(М) = га - г(М) = т — η + к совпадает с цикломатическим числом ι рафа G. Пусть В — некоторая база матроида Μ = M(G). Тогда соответствующую кобазу В называют еще и коостовом (это множество тех ребер графа, которые нужно отбросить из графа, чтобы получить его остов). В силу леммы 2 козависимые множества матроида M(G) — это те и только те множества ребер графа, которые имеют непустое пересечение с каждой базой. Следовательно, козависимые множества из M(G) — это гс и только те множества ребер, при стирании которых в графе G разрушаются все остовы, т. е. увеличивается число компонент связности. Таким образом, козависимые множества из A/(G) — это в точности разрезающие множества ребер графа, а тогда коциклы — это разрезы! Следовательно, циклы и разрезы графа — это взаимно двойственные объекты. Матроид M*(G), двойственный к матроиду M(G), называют матрои- дом разрезов графа G. Отметим, что для любого дерева Τ матроид М(Т) свободен, а матроид М*(Т) тривиален. Пример. Рассмотрим матроид циклов следующего графа: Рис. 20 Тогда 1) Е= {е1,е2,ез,е4,е5} основное множество матроида;
90 Глава 4. Матроиды 2) Βι = {е2,е3,е4},£2 = {еье3,е4},£з = {ei,e2,e4} - множество баз; 3) S7 = {еье5},£?2 = {е2,е5},£?з = {e3,e5} — множество кобаз; 4) {еье2},{е1,ез},{е2,ез}, {е4} — множество коциклов, совпадающее с множеством разрезов рассматриваемого графа. § 4.6. ЖАДНЫЙ АЛГОРИТМ Пусть Ε — непустое конечное множество и w — функция из Ε в множество действительных чисел R. Число w(e) будем называть весом элемента е € Е. Для любого непустого А С С Ε положим w(A) = Σ w(e) и будем называть w(A) весом е£А множества А. Зафиксируем некоторое семейство X С V{E), в котором имеется хотя бы одно непустое множество. Будем смотреть на X как на частично-упорядоченное множество относительно теоретико-множественного включения. Для удобства элементы частично-упорядоченного множества X будем называть объектами. Будем далее считать, что X удовлетворяет аксиоме независимости (1.1), т.е. подмножество объекта является объектом. Рассмотрим следующую задачу: В частично упорядоченном множестве объектов X по- строить максимальный объект минимально возможного веса. Исследуем, при каких условиях на семейство объектов следующий алгоритм решает поставленную задачу. Жадный алгоритм. 1) В качестве е\ выберем в Ε элемент наименьшего возможного веса такой, что {ei} EX. 2) Пусть элементы βι,...,βί_ι уже выбраны. В качестве ei выберем в Ε элемент наименьшего возможного веса такой, что е* g {ei,...,e<_i} и {еь...,е*} е X. 3) Выполняем 2) до тех пор пока это возможно. Процесс обязательно завершится и будет построен максимальный
sN / в. Жадный алгоритм 91 пОьект 5 = {еь...,ег}а. Теорема 4.16. Пусть семейство объектов X удовлетворяет дополнительно аксиоме независимости (1.2), т. е. X чаляется семейством Ind всех независимых множеств некоторого нетривиального матроида на Е. Тогда любое множество В, построенное жадным алгоритмом, будет максимальным объектом минимально возможного веса. Доказательство. Пусть X — семейство независимых множеств некоторого нетривиального матроида Μ = М(Е) и объект В = {ei,...,er} построен жадным алгоритмом, как ука- UIHO выше. Очевидно, В является базой матроида М. Пусть, от противного, В не является базой минимального мозможного веса. Среди баз минимального возможного веса иыберем базу В', для которой число \В П В'\ имеет наибольшее возможное значение. Так как В ^ В', имеем В <£ В'. Возьмем элемент е* с наименьшим номером такой, что е* £ В'. Тогда {eb... ,e;_i} С В Г) В'. Множество В1 U е* содержит точно один цикл С. Поскольку С £ В, существует е € С\В. Ясно,что е € В'. Положим £?" = {Bf U е;) \ е. Отбросив е, мы разрушили единственный цикл в В' U е*. Следовательно, В" — независимое множество матроида Μ и \В"\ = \В'\, т.е. В" — база матроида М. Кроме того, очевидно, \В" Π Β\ > > \В*ПВ\. Поэтому w{B") > w(B') в силу выбора базы В'. Так как w{B") = w{B,)+w{ei) — w{e)y получаем w(ei)—w(e) > > 0, т.е. w(ei) > w(e). Последнее неравенство противоречит тому, что на г-м шаге жадного алгоритма был выбран элемент г,·, а не элемент е, хотя е £ {βι,... ,β^_ι} С В и множество {еь... ,е^_1,е} С В' независимо. D Пусть G — связный неодноэлементный граф. Рассмотрим на множестве его ребер Ε = E(G) некоторую весовую функцию w, которая каждому ребру е ставит в соответствие вес ребра w(e) e R. Семейство X ациклических наборов ребер является семейством независимых множеств матроида циклов M(G) графа G. Базами этого матроида являются, по существу, остовы графа G. В силу доказанной теоремы жадный
92 Глава 4. Матроиды алгоритм в данном случае строит остов минимально возможного веса в графе G. Следующее предложение показывает, что выполнение аксиомы независимости (1.2) необходимо для того, чтобы при любой весовой функции жадный алгоритм всегда строил бы в семействе объектов X максимальный объект минимально возможного веса. Предложение 4.1. Пусть семейство объектов X не удовлетворяет аксиоме независимости (1.2). Тогда существует весовая функция w из Ε eR, для которой любое применение жадного алгоритма строит в X максимальный объект, не являющийся максимальным объектом минимально возможного веса. Доказательство. Пусть семейство объектов X не удовлетворяет аксиоме независимости (1.2). Тогда существуют /, J е е X такие, что t = |/| < |J\ = 1+1, где t е Ν, и /Uρ &X для любого ре J\I. Пусть |/ Π J\ = s, где s е N U 0. Очевидно, s <t. В качестве весовой функции рассмотрим следующую функцию Г -1, ее/, , ч Is — t — 0,5 τν _ w{e) = \ ТГ7ТГ' eGj\J' { 0, eeE\(IUJ). Очевидно, s-t-0,5 Л -1 < ~ < 0. t - s + 1 При такой весовой функции w жадный алгоритм сначала обязательно выберет все элементы множества /, а затем (возможно) выберет элементы из E\(I\J J) и построит некоторое максимальное множество 1\ такое, что / С Ιλ и w{I\) = w(I) = = -t. Заметим далее, что w(J) = -s + (t + 1 - s) · *~*~0'5 = -* - 0,5 < -t τ — s + 1
sS 7 7. Изоморфизмы матроидов 93 Илеширим J до некоторого максимального в X множества J\. 1игла, очевидно, w(Ji) < w(J) < w(Ii). Следовательно, любое построенное жадным алгоритмом максимальное множество 1\ не является максимальным объектом минимально возможного веса. D § 4.7. ИЗОМОРФИЗМЫ МАТРОИДОВ Пусть М\ = М(Е\) и М2 = М(Е2) — два матроида. Биек- (ивное отображение φ из Е\ на Е2 называется изоморфизмом матроида М\ на матроид М2, если для любого В С Ει множество В является базой матроида М\ тогда и только тогда, когда его образ ф(В) является базой матроида М2. Очевидно, при изоморфизме циклы переходят на циклы, кобазы — на ко- г>;1зы, независимые множества — на независимые множества и т.д. Определение изоморфизма эквивалентным образом можно дать, используя любое из основных матроидных понятий (базы, кобазы, независимые множества, конезависимые множества, зависимые множества, козависимые множества, циклы, коциклы). Приведем для примера определение изоморфизма на языке козависимых множеств. Биективное отображение φ из Е\ на Е2 называется изоморфизмом матроида М\ на матроид М2, если для любого А С Εχ множество А козависимо в М\ тогда и только тогда, когда его образ ф(А) — козависимое множество в М2. Мы будем писать М\ = М2 и говорить, что матроиды М\ и М2 изоморфны, если существует изоморфизм матроида М\ на матроид М2. Заметим, что из М\ = М2 вытекает М{ = М2. Любой матроид, изоморфный векторному матроиду над телом F, также будем называть векторным над телом F. Очевидно, любой векторный матроид над телом F изоморфен матроиду столбцов некоторой матрицы над телом F. Действительно, в соответствующем конечномерном векторном пространстве надо взять базис и перейти от векторов, отвечающих элементам матроида, к их координатным столбцам. Матроид назовем графическим, если он изоморфен матроиду циклов некоторого ненулевого графа, и — кографическим,
94 Глава 4. Матроиды если он изоморфен матроиду разрезов некоторого ненулевого графа. Теорема 4.17. Матроид циклов M(G) ненулевого графа G изоморфен матроиду столбцов матрицы инцидентности 1(G) над двухэлементным полем Ъ^. Доказательство. Для произвольного АС Ε = E(G) через 1(A) обозначим подматрицу матрицы / = /(G), составленную из столбцов, отвечающих ребрам из А. Достаточно доказать, что rank 1(A) < \А\ тогда и только тогда, когда подграф (V, А) содержит цикл, где V = VG и Аф$. Пусть С — цикл подграфа (V, А). Ранг матрицы 1(A) не изменится, если изменить нумерацию вершин и ребер. Перенумеруем вершины из У и ребра из А таким образом, чтобы вершины и ребра цикла С имели наименьшие возможные номера. Тогда матрица 1(A) примет вид где I\ = 1(C). Для квадратной матрицы 1\ над полем Z2 выполняется det/i = 0, так как Ιχ = О или в каждом столбце матрицы Ιχ имеется точно два элемента, равных 1, а остальные элементы равны 0. Следовательно, ранг матрицы 1(A) строго меньше числа ее столбцов, равного \А\, т.е. rank 1(A) < \А\. Обратно, предположим, что ненулевой подграф (V,A) является ациклическим. Возьмем одну из нетривиальных компонент связности Ηχ этого подграфа. Изменим нумерацию вершин и ребер графа G. Одной из висячих вершин νχ и инцидентному ей ребру графа Ηχ припишем номера, равные 1. Перейдем к графу Ηχ — νχ. Опять одной из висячих вершин графа Ηχ — νχ и инцидентному ей ребру припишем номера, равные 2, и т. д. Так перенумеруем вершины и ребра компоненты связности Н\, пока не останется точно одна вершина, которую мы занумеруем позже. Затем аналогичным образом поступим со следующей нетривиальной компонентой связности #2 графа (V, А) и т. д. В, конце процесса занумеруем
\\ / 7. Изоморфизмы матроидов 95 игршины, которые остались незанумерованными после обработки всех нетривиальных компонент связности графа (V,A). Матрица 1(A) примет вид Очевидно, ее ранг равен числу столбцов, т.е. гапк(А) = \А\. Π Теорема 4.18. Матроид, двойственный к векторному матроиду над телом F, также является векторным над телом F. Доказательство. Очевидно, свободный и тривиальный матроиды являются векторными над произвольным телом F. Они изоморфны матроиду столбцов соответственно единичной и нулевой матриц подходящего порядка над телом F. Пусть Μ — произвольный нетривиальный и несвободный матроид, который является векторным над телом F, и г = г(М). Тогда в силу замечания, сделанного выше, Μ изоморфен матроиду столбцов некоторой (t χ т)-матрицы Ρ над телом F. Ясно, что rank Ρ = г и 0 < г < m. Рассмотрим следующую однородную систему линейных уравнений над пространством векторов-столбцов Fm: РХ = 0. (1) 11усть ^Ь^2,· ·· ,Хт-г (2) - базис пространства решений системы (1). Составим из этих столбцов (тх (т — г))-матрицу Q = \Х\^Х2ч · · · > Хщ-г)'
96 Глава 4. Матроиды Покажем, что матроид М* изоморфен матроиду строк матрицы Q над телом F. Отметим сначала, что rankQ = т — г = г(М*). Далее вспомним, что базами матроида М* являются дополнения баз матроида М. Рассмотрим отображение ф, которое г-й столбец матрицы Ρ переводит на г-ю строку матрицы Q. Покажем, что это отображение и есть искомый изоморфизм. Нам достаточно установить, что система каких-либо г столбцов матрицы Ρ линейно независима тогда и только тогда, когда линейно независима дополняющая ее система т — г строк матрицы Q. Дополняющая система строк — это система строк, номера которых дополняют номера столбцов исходной системы столбцов до множества {1,..., га}. Возьмем произвольную систему из г столбцов матрицы Р. Для простоты обозначений будем считать, что взяты первые г столбцов. Рассуждения в общем случае проводятся абсолютно аналогично, но требуют громоздких обозначений. Пусть Pi — это (t χ г)-подматрица матрицы Р, составленная из взятых первых г столбцов. Рассмотрим однородную систему линейных уравнений над пространством векторов-столбцов Fr: ΡλΥ = 0. (3) Если столбцы матрицы Ρχ линейно зависимы, то система (3) имеет ненулевое решение Υ. Добавим к нему снизу т — г нулей, получим ненулевое решение X системы (1). Выразим X через базис (2) пространства решений системы (1): X = αχ Χι + а2Х2 + · · · + am_rXm-r, (4) где среди коэффициентов есть хотя бы один ненулевой элемент из F. Введем в рассмотрение столбцы из пространства Fm~r, полученные соответственно из столбцов Χι, Χ2ι..., Xm-r отбрасыванием первых г компонент. Составим из этих «урезанных» столбцов ((т — г) х (га — г))-мат- рицу:
ψ / tf Пространство циклов бинарного матроида 97 Мптрица Q\ — это квадратная матрица порядка т — г, ко- шрая является подматрицей матрицы Q и расположена внизу матрицы Q. Из равенства (4) следует О = ахХ[ + а2Х'2 + · · · + ат-гХ'т_г, (6) ι ν. система столбцов квадратной матрицы Q\ линейно зави- t има. Тогда линейно зависима и система строк этой матрицы, \ с. линейно зависима система изт-r последних строк матрицы Q. Обратно, пусть система каких-либо т — г строк матрицы Q линейно зависима. Для простоты обозначений будем ι читать, что эта система состоит из последних т - г строк матрицы Q. Тогда линейно зависима система (5) «урезанных» ι голбцов, составляющих матрицу Q\. Следовательно, неко- юрая нетривиальная линейная комбинация (6) «урезанных» столбцов равна 0. С помощью равенства (4) определим стол- ооц X. Поскольку система столбцов (2) линейно независима, имеем Χ φ 0. Столбец X является решением системы (1), так как он равен линейной комбинации базиса пространства решений этой системы. Тогда столбец У, полученный из столбца X отбрасыванием последних т — г нулевых компонент, является ненулевым решением системы (3). Следовательно, линейно 1ависима система из первых г столбцов матрицы Ρχ, что и требовалось доказать. D § 4.8. ПРОСТРАНСТВО ЦИКЛОВ БИНАРНОГО МАТРОИДА Матроид называется бинарным, если он является векторным над полем Ъ2. В силу результатов предыдущего раздела матроид циклов и матроид разрезов любого ненулевого графа являются бинарными матроидами. Пусть М(Е) — произвольный бинарный матроид. Превратим V(E) в векторное пространство над полем Z2, полагая для любых Х,У eV{E) Χ Θ Υ = {X U У) \ {Χ Π У), 1 · Χ = Χ, 0 · Χ = 0.
98 Глава 4. Матроиды Очевидно, V(E) — векторное пространство над Z2 относительно симметрической разности 0 и заданного умножения на скаляры из Z2 = {0,1}. Обозначим через L(M) подмножество из V(E), состоящее из всех подмножеств множества Е, представимых в виде объединения попарно непересекающихся циклов матроида Μ (конечно, среди них будет пустое подмножество 0 и любой цикл матроида М). Зафиксируем некоторую базу В матроида М. Тогда для любого е е В через Се обозначим единственный цикл, который содержится в множестве BUe. Теорема 4.19. Пусть Μ = Μ (Ε) — произвольный бинарный матроид. Тогда: 1) L(M) — подпространство векторного пространства V{E); 2) {Се \е е В} — базис пространства L(M) над полем Z2; 3) dimL(M) = r*(M). Доказательство. Поскольку Μ — векторный матроид над Ζ2, он изоморфен матроиду столбцов некоторой (/ x m)- матрицы Ρ над полем Ζ2. Пусть φ — соответствующий изоморфизм такой, что ф(вг) = р^ где Ε = {eb...,em}, a Pi — это г-й столбец матрицы Р. Для любого X С Ε положим S(X) = Σ ф(е), где сум- мирование ведется в пространстве векторов-столбцов Ζι2· Конечно, мы считаем, что 5(0) = 0, где 0 — нулевой столбец из 1}2. Из определения видно, что S(X О Y) = S(X) + S(Y) для любых двух непересекающихся подмножеств Χ,Υ С Е. Покажем сначала, что для любого X С Ε X е L{M) & S{X) = 0. Действительно, пусть С = {е^,... ,e;t} — цикл матроида М. Тогда его образ {р^,... ,pit] относительно изоморфизма φ будет минимальной линейно зависимой системой столбцов матрицы Р. Следовательно, некоторая нетривиальная линейная комбинация этих столбцов равна 0: агРгг +···'+ оцри = 0.
\N 7 Η Пространство циклов бинарного матроида 99 И силу минимальности системы столбцов все скаляры равны 1, т. е. S(C) = 0. Пусть теперь X = Сх 0 ... ϋ Ct - объ- гдинение попарно непересекающихся циклов. Тогда S(X) = .S'(d) + --. + S(C,)=0. Обратно, пусть X С Ε, Χ φ 0 и S(X) = 0. Тогда система столбцов матрицы Р, соответствующая множеству X относи- юльно фу линейно зависима. Поэтому X — зависимое множество матроида Μ и, следовательно, существует цикл С\ С X. Положим Хг = X \ Сг. Тогда 0 = S(X) = S(Xi) + S(d) = S(X\). Если Χχ φ 0, то существует цикл С2 С Хх. Положим Х2 = Х\ \ С2 и т. д. Через несколько шагов множество Υ будет разбито в объединение семейства попарно непересекающихся циклов. Проверим теперь, что L(M) — подпространство пространства V{E). Для этого достаточно доказать замкнутость L(M) относительно ф. Пусть X,Y e ЦМ). Тогда S(X) = S(Y) = 0 м мы получаем S(X®Y) = S{{X\{XnY)} ϋ{Υ\(ΧηΥ)}) = = S(X \{ΧΠ Υ)) + S{Y \{ΧΠ Υ)) = = S{X \ (Χ Π У)) + S(X Π Υ) + S(X П Υ) + + S(Y \ (X Π У)) = S(X) + 5(У) = 0, т.е. ХфУеЬ(М). Таким образом, L(M) — подпространство пространства Р{Е). Покажем теперь, что {Се \ е е В} — базис пространства L(M). Сначала проверим, что эта система линейно независима. Пусть ei,...,et — произвольная система различных элементов из В. Тогда {eb...,et} CCei Θ···θ£7βί, т.е. Cei0---0Cet Ф®. Иными словами, любая нетривиальная линейная комбинация векторов системы {Се \ е е В} отлична от нуля.
100 Глава 4. Матроиды Покажем теперь, что {Се \е е В} — система образующих пространства L(M). Пусть X — произвольный ненулевой элемент из L(M), т.е.1/ 0. Тогда X — зависимое множество и, следовательно, оно пересекается с каждой кобазой. Положим ХПВ={еь...,е4}^0. Рассмотрим множество Υ = Χ 0 Cei 0 · · · Θ Cet. Очевидно, Υ € L(M) и Υ Π ~Β = 0. Отсюда следует Υ = 0, т. е. X = = C/€l 0 · · · 0 Gei. Итак, {Се \е е В} — базис пространства L(M) и, следовательно, dim L(M) = |£?| = г*(М). Ώ Пространство L = L(M) называют пространством циклов бинарного матроида Μ = М(Е)% а его базис {Се \ е € € В} — фундаментальной системой циклов относительно базы В. Так как матроид М* также бинарен, мы получаем пространство коциклов L* = L(M*) и фундаментальную систему коциклов {CJ \ f e В}, причем dimL* = r(M). Теорема 4.20. Пусть f е В и Св1,..., Cet — множество всех циклов фундаментальной системы, содержащих /. Тогда С} = {/,eb...,et}. Доказательство. Положим X = {/, ei,..., et}. Множество ВU/ содержит точно один коцикл CJ. Очевидно, X С BUf. Поэтому достаточно установить, что X является коциклом. По теореме, двойственной к теореме 4.16, X является коциклом, если X есть минимальное множество среди непустых подмножеств из Е, удовлетворяющих свойству \Х Π С\ Φ 1 для любого цикла С Пусть С — цикл. Он однозначно представим через фундаментальную систему циклов в виде О = 0Ul 0 · · · 0 Otts, где iti,...,ue — попарно различные элементы из В. Рассмотрим два случая. 1. Пусть f е С. Тогда / е CUi для некоторого щ, где t €{!,...,*} и {/,wjCXnC, т.е. \Х П С\ > 1.
§ 4.9. Пространство циклов и пространство разрезов графа 101 2. Предположим теперь, что f & С. 2.1. Если / не входит ни в один из циклов CUI,..., CUg, то f/(l,...,us £ X и X ПС = 0, т.е. опять имеем \Х Г\С\ Φ 1. 2.2. Пусть теперь / входит в некоторый из циклов CUl,... ...,CUs. Тогда / входит в четное число указанных циклов. Следовательно, / € CUi и / € CUj для некоторых различных Uj и Uj. Тогда {гц, Wj} С Χ η С и опять |Х Π С| Φ 1. Итак, мы установили, что |ХпС| Φ 1 для любого цикла С. Проверим, что это условие нарушается для собственных непустых подмножеств множества X. Пусть У С X и У Φ 0. Рассмотрим два случая. 1. Предположим, что / £ У. Тогда Υ С В и поэтому множество Υ конезависимо. Согласно лемме, двойственной лемме 3 из раздела 6, существует такой цикл С, что \Υ Π С\ = 1. 2. Пусть / € У. Тогда существует г е {1,... ,£}, для которого βι & У. Следовательно, У П Св< = {/}, т. е. |У Π Се< | = 1. Итак, X является коциклом и поэтому CJ = X. D § 4.9. ПРОСТРАНСТВО ЦИКЛОВ И ПРОСТРАНСТВО РАЗРЕЗОВ ГРАФА Пусть G — произвольный ненулевой граф. Матроид циклов Μ = M(G) и матроид разрезов М* = M*(G) графа G являются бинарными матроидами. Рассмотрим подпространства L = L(M) и L* = L(M*) пространства V{E) над полем Z2, где Ε = EG. Пространства L и L* называют соответственно пространством циклов и пространством разрезов графа G. Часто их обозначают соответственно через £(G) и L*(G). Зафиксируем некоторый остов В графа G (точнее, под В мы понимаем множество ребер остова). Ребра графа, лежащие и В, будем называть ветвями, а ребра, лежащие в В, — хор- Оами. Базис {Се \е е В} пространства L(G) называют фундаментальной системой циклов графа G, а базис {Cj \ f e ( В} — фундаментальной системой разрезов графа G. Заметим, что dimL(G) = r*(G) = т — п + k — это цикломати- чсское число (η, m, £)-графа G, a dimL*(G) = r(G) = n — k — wo ранг. Отсюда легко выводится следующее утверждение.
102 Глава 4. Матроиды Лемма 1. Любой (п,т,к)-граф содержит не более 2m~n+fc - 1 циклов и не более 2п~к - 1 разрезов. Пример. Рассмотрим следующий граф G и его остов В: G В Рис. 21 Применяя теорему 4.20, найдем фундаментальную систему разрезов, отвечающих этому остову: 0 {ei,e2}; 2) {ез,е2,е4,е6}; 3) {е7,е4,е6}; 4) {е5,е6,е8}. Из результатов раздела, посвященного эйлеровым графам, легко вытекает следующее утверждение. Теорема 4.21. Пусть G — произвольный ненулевой граф. Множество ребер X С Ε является вектором пространства циклов L(G) графа G тогда и только тогда, когда в ребер- но порожденном подграфе G(X) все компоненты связности являются эйлеровыми графами. Прежде чем изучить устройство векторов пространства разрезов графа G, получим ряд вспомогательных результатов, часть из которых представляет и самостоятельный интерес. Пусть А, В С V = VG. Через (А, В) будем обозначать множество ребер графа G, соединяющих вершины из А с вершинами из В. Пусть V = V\ U V2 — разбиение множества вершин графа G на два возможно пустых непересекающихся подмножества. Множество ребер (VbVb) будем называть сечением графа G. Очевидно, любое сечение либо пусто, либо является разрезающим множеством ребер графа G.
ψ' 4.9. Пространство циклов и пространство разрезов графа 103 Лемма 2. Любой разрез графа является его сечением. Доказательство. Пусть при удалении ребер разреза S из ι рафа G компонента связности G\ графа G разбивается на две компоненты связности G\ и G". Положим V\ = VG\ и V2 = V\Vi. Очевидно, S = (Vi,V2). □ В пространстве V(E), где Ε — множество ребер ненулевого графа G, зафиксируем канонический базис, состоящий из исех одноэлементных подмножеств множества Е: {ei},...,{e?m}. Пусть X,Y e V(E). Тогда X = αι{βι} Θ · · · Θ am{em}, Υ = βΐ{βΐ}®···®βτη{βτη] для некоторых αϊ,... ,am,ft,... ,/3m G Z2 = {0,1}. Заметим, что столбцы координат векторов X и У в данном случае представляют собой характеристические функции для подмножеств X и Υ множества Е. Определим скалярное прозведе- ние в V(E), полагая Χ·Υ = α1βι + ..' + ατηβτηβΖ2. Легко проверить, что определенное таким образом скалярное произведение линейно по каждой компоненте. Как обычно, назовем векторы X и Υ ортогональными и запишем X _L Yy если Χ·Υ = 0. Очевидно, X ортогонально Υ тогда и только тогда, когда X и Υ имеют четное число общих ребер. Пусть U С V(E). Будем писать X 1 W, если вектор X ортогонален любому вектору из U. Определим ортогональное дополнение UL множества U, полагая U-L = {X eV(E)\X 1U}. 11етрудно установить, что И1· является подпространством пространства V{E).
104 Глава 4. Матроиды Лемма 3. Любой цикл ортогонален любому сечению графа. Доказательство. Пусть С — цикл, a S = (Vi, V2) — сечение графа G, где VG = ViUV2. Зафиксируем один из двух обходов по циклу С. Начнем двигаться из некоторой начальной вершины ν в направлении обхода по циклу С. Без ограничения общности можно считать, что υ е V\. Поскольку обход цикла заканчивается в вершине υ, каждому переходу по ребру из V\ в V2 обязательно соответствует следующий за ним (через некоторое число шагов) переход по ребру из V^ в Vi. Таким образом, ребра из пересечения С Π S разбиваются на пары, поэтому С и S имеют четное число общих ребер. D На основании лемм 2 и 3 получаем Следствие 1. Любой цикл ортогонален любому разрезу графа. Теорема 4.22. ΙΑ = L* и (L*)1 = L. Доказательство. Покажем сначала, что L 1 L*. Пусть X е L и У G L*. Тогда для X и У существуют разложения соответственно через циклы и разрезы фундаментальных систем. Отсюда в силу ортогональности циклов и разрезов вытекает i.y = J(crq) = o, т.е. XI Г. Из доказанного получаем L* С L1 и L С (Ь*)1. Из обратных включений докажем включение (1/*)х С £,, другое включение проверяется аналогично. __ Пусть Х_е (Ь*)х. Положим Χ Π В = {еь ..., et} (случай, когда Χ Π ~Β = 0, мы не исключаем). Рассмотрим вектор У, заданный условием Υ = X 0 Cei Θ · · · Θ Cet (здесь Υ = Χ, если X Π Β = 0). Очевидно, У Π 2? = 0, т. е. У С В. Кроме
§ 4.9. Пространство циклов и пространство разрезов графа 105 того, Υ е (L*)1, так как C€l Θ · · · Θ Се± е L С (L*)-1-. Если К ^ 0, то У — непустое независимое множество, и поэтому в силу леммы 3 из раздела 6 существует разрез С* такой, что |КПС*| = 1, т.е. Υ не ортогонален С*, что невозможно. Таким образом, Υ = 0 и, следовательно, X = Се1 Θ · · · Θ Cet e L. D В связи с доказанной теоремой заметим, что пространство Р(Е) не всегда представимо в виде прямой суммы подпространств L и ΙΛ Примером может служить следующий граф: Рис. 22 Здесь множество {е1,е2,ез,е4} является одновременно и циклом и разрезом, т.е. L Г\ L* не является нулевым подпространством и поэтому сумма L 0 L* не является прямой суммой. Лемма 4. Симметрическая разность сечений является сечением. Доказательство. Пусть V = V\ ύ V2 = V£ U V4, Si = = (Vi,K2) hS2 = (V^Vi). Положим Л = У1ПУ3, B = VinV4l С = У2ПУ3, /) = К2ПУ4. Гогда Si = (Α ύ В,С UjD> = (А,С) U(A,D) U(B,C) ύ (£,£>), S2 = (Α ύ С,В ϋ £>) = (Α, Β) ϋ(Α,£>) ϋ(σ,Β) U(C,£>). Отсюда вытекает Si eS2 = (А, С) \J(A,B) \J(B,D)\J(C,D) = = (A\J D,BUC), где V = (Al)D) U(BUC), т.е. Si®S2 является сечением. D
106 Глава 4. Матроиды Теорема 4.23. Пусть G — произвольный ненулевой граф. Тогда сечения графа G и только они являются векторами пространства разрезов L*(G) графа G. Доказательство. Пусть S — сечение графа G. По лемме 3 сечение S ортогонально любому циклу из фундаментальной системы циклов. Следовательно, S _L L. Откуда вытекает, что SeLL=L*. Обратно, пусть S € L*. Тогда S представимо в виде симметрической разности разрезов из фундаментальной системы разрезов: s = c1*e---ect*. Отсюда на основании лемм 2 и 4 получаем, что S является сечением. D § 4.10. МОНОТОННЫЕ ПОЛУМОДУЛЯРНЫЕ ФУНКЦИИ. ИНДУЦИРОВАННЫЙ МАТРОИД Пусть Ε — непустое конечное множество. Функция / из V(E) в N U {0} называется монотонной полумодулярной функцией, если она удовлетворяет ранговым аксиомам (г.2) и (г.З). Лемма 1. Пусть f — монотонная полумодулярная функция из V(E) β Ν U {0} такая, что /(0) = 0. Тогда такими же свойствами обладает функция /+ из V(E) в N U {0}, заданная равенством f+(A) = min(f(U) + \A\U\) UCA для любого АСЕ. Доказательство. Свойство /+(0) = 0 выполняется очевидным образом. Проверим монотонность функции /+. Пусть А\ С А2 С Е. Тогда для произвольного U С А2 выводим /(ипАг^АгМипАг)] = ПипАг)+\Аг\и\ < f(U)+\A2\U\, откуда очевидно вытекает f+(Ai) ^ f+(A2).
4.10. Монотонные полумодулярные функции 107 Далее, используя простые теоретико-множественные рас- уждения (рис. 23), нетрудно проверить, что для любых А\ С \AQEuB\CBC.E имеет место равенство \А\А1\ + \В\В1\ = = \(АиВ)\(А1ОВ1)\ + \(АГ)В)\ (Aj ηΒχ)\. Рис. 23 Отсюда в силу полумодулярности функции / получаем (/(Ах) + \А\А1\) + (/(Я,) + \В\В1\)> > (f(Ai U Βι) + \(А U β) \ (Αι U B0I) + + (/(Αχ П ВО + \(А П В) \ (А! П BOD· Теперь, используя полученное неравенство, выводим /+(А) + /+(В) = rain (f(A1) + \A\A1\ + AiCA.BiCB + /(ВО + |В \ BjI) ^ rain (/(Л! U ВО + AiCA.BiCB + \(А U В) \ (Αχ U B0I + /(Αχ Π ВО + + \(АПВ)\(А1ПВ1)\)> rain (/(*) + + |(Л U В) \ Х| +/(У) + |(Л П В) \ Г|) = = /+(ЛиВ) + /+(АПВ). D
108 Глава 4. Матроиды Лемма 2. Пусть f — такая же функция, как в лемме 1. Тогда: 1) если \U\ ^ f(U) для любого U С А, то f+(A) = |<А|; 2) если \U\ > f(U) для некоторого U С А, то f+(A) < <\А\. Доказательство. Пусть \U\ ^ f(U) для любого U С А. Тогда /({/) + \A\U\> \A\{U С А) и для С/ = 0 имеем /(0) + + |j4\0| = |А|. Следовательно, /+(А) = \А\. Если |{/| > /({/) для некоторого ί/ С Л, то /(1/) + |А\Е/| < < \А\, и потому f+(A) < \А\. Π Теорема 4.24 (Эдмондс). Пусть Ε — непустое конечное множество и f — монотонная полумодулярная функция из V(E) β Ν U {0} такая, что /(0) = 0. Тогда существует матроид Μ/{Ε) на множестве Е, для которого: 1) функция /+ является ранговой функцией, т. е. r(A) = mm(f(U) + \A\U\) для любого А С Е; 2) произвольное множество АСЕ независимо в том и только в том случае, когда \U\ ^ f(U) для любого U С А. Доказательство. В силу леммы 2 для любого АСЕ имеем 0 ^ /+С<4) ^ \А\, т.е. /+ удовлетворяет ранговой аксиоме (г.1). Таким образом, /+ удовлетворяет всем трем ранговым аксиомам и, следовательно, является ранговой функцией точно одного матроида на Е. Обозначим этот матроид через Mf(E). Произвольное подмножество АСЕ независимо в матрои- де М/(Е) тогда и только тогда, когда г(А) = \А\, т.е. когда f+(A) = |j4|. В силу леммы 2 последнее условие эквивалентно тому, что \U\ ^ /({/) для любого U С A. D Матроид М/(Е), указанный в теореме, будем называть матроидом, индуцированным монотонной полумодулярной функцией /.
ψ ·/.//. Трансверсальные матроиды 109 Полезно заметить, что если у произвольной монотонной иолумодулярной функции из V(E) в NU {0} значение от пу- (того множества заменить на 0, то подправленная функция «нова будет монотонной полумодулярной функцией и к ней можно применять доказанную теорему. Заметим также, что если / удовлетворяет всем трем ранговым аксиомам, то /+ = /. Отметим, что теорема Эдмондса дает один из наиболее полезных методов конструирования новых матроидов, в чем мы сможем убедиться в следующих двух разделах. § 4.11. ТРАНСВЕРСАЛЬНЫЕ МАТРОИДЫ Пусть G = [V, К) — двудольный граф, долями которого являются непустые множества X и Y, т.е. V = Χ ύ Υ и любое ребро е е R соединяет некоторую вершину из X с некоторой вершиной из Υ. В дальнейшем такой граф G мы будем записывать в виде G = (Ху Д, Υ) или, что эквивалентно, м виде G = (У, Д, X). Для удобства мы будем писать кратко г,у е Д, если в R имеется ребро вида е = ху. Для произвольного АС X положим ДИ)= \J{yeY\ayeR}. Лемма 1. Функция f(A) = \R(A)\ из V(X) в N U {0} является монотонной полумодулярной функцией и /(0) = = 0. Доказательство. Условие /(0) = 0 выполняется очевидным образом и функция / монотонна, так как для любых Λ С В С X верно включение R(A) С R(B). Предположим далее, что А,ВСХ. Тогда в силу соотношений R(A U В) = R(A) U R(B) и R(A П В) С R(A) П R(B) получаем \R{A U В)\ + \R(A Π Β)\ ζ \R(A) U ЩВ)\ + \R(A) Π R(B)\ = = \R(A)\ + \R(B)\, т. е. функция / полумодулярна. D
110 Глава 4. Матроиды В силу теоремы Эдмондса из предыдущего раздела функция /, указанная в лемме, индуцирует матроид М/(Х) на множестве X. Будем обозначать этот матроид через Т(Х,R,Y). В матроиде Т(Х,R,Y) независимые множества А характеризуются условием \U\ ^ \R(U)\ для любого U С А, а ранговая функция задается равенством r(A) = mm(\R(U)\ + \A\U\). UCA Любой матроид, изоморфный матроиду вида Т(Х,R,Y), будем называть пгрансверсальным мапгроидом. Аналогично предыдущему для любого В С Υ положим R(B)= \J{xeX\xbe R}. Функция g(B) = \R{B)\ из V(Y) в NU{0} индуцирует матроид Mg(Y) = T(y,RtX). Паросочепганием Р в двудольном графе G = (X, R, Υ) называют такое подмножество ребер из Д, что любые два различных ребра из Ρ несмежны, т.е. не имеют общих концевых вершин. Через matchx(P) и тпаЬску(Р) будем обозначать множество всех концевых вершин ребер паросочетания Р, лежащих соответственно в X и Y. Будем говорить, что множество А С X является частичной трансверсалью в X, если А = matchx(P) для некоторого паросочетания Ρ графа G = = (ХуR,Y). Будем также говорить, что множество А С X может паросочетаться с множеством В С У, если А = = matchx(P) и В = πιαίάΐγ{Ρ) для некоторого паросочетания Ρ графа G = (X, Д, Υ) (конечно, здесь А и В — частичные трансверсали соответственно в X и Υ). Заметим, что множество АС X является частичной трансверсалью в X тогда и только тогда, когда существует инъек- тивное отображение φ из А в Υ такое, что аф(а) е R для любого а е А.
\V -/. / /. Трансверсальные мапгроиды 111 Заметим также, что в число паросочетаний мы включаем пустое паросочетание, а в число частичных трансверсалей — пустую частичную трансверсаль. Теорема 4.25 (Холл, 1935). Пусть G = (X,R,Y) — произвольный двудольный граф. Тогда множество АСХ является частичной трансверсалью в X в том и только в том случае, когда \U\ ^ \R(U)\ для любого U С А. Далее в этом разделе мы докажем более общее утверждение, из которого будет вытекать теорема Холла, а пока приведем ряд следствий теоремы Холла. Следствие 1 (Эдмондс и Фалкерсон). Пусть G = = (Х,Д, Y) — произвольный двудольный граф. Тогда: 1) семейство частичных трансверсалей в X совпадает с семейством независимых множеств матроида T(XiR1Y); 2) семейство частичных трансверсалей в Υ совпадает с семейством независимых множеств матроида T(Y, R,X); 3) матроиды T(X,R,Y) и T(Y,R,X) имеют одинаковый ранг, который равен мощности наибольшего по числу ребер паросочетания графа G. Это утверждение, в частности, говорит о том, что все максимальные частичные трансверсали вХиУ равномощны. Однако, как нетрудно убедиться, максимальные паросочетания двудольного графа G = (X,R,Y) могут быть не равномощны. Это означает, что семейство всех паросочетаний графа G, вообще·говоря, может не удовлетворять аксиоме независимости (1.2), хотя и удовлетворяет аксиоме независимости (1.1). Ясно, что максимальные частичные трансверсали в X (соответственно в У) и только они представимы в виде matchx(P) (соответственно в виде таЬску(Р)) для некоторого наибольшего по числу ребер паросочетания Ρ графа G. Следствие 2. Для двудольного графа G = (X,R,Y) существует частичная трансверсаль в X мощности £, где 0 ^ t ^ ^ \Х\, тогда и только тогда, когда
112 Глава 4. Матроиды \U\ + t-\X\^\R(U)\ для любого U С X. Доказательство. Очевидно, частичная трансверсаль в X мощности £, где 0 ^ t ^ |Х|, существует тогда и только тогда, когда ранг г матроида T(X,R,Y) больше или равен £, т.е. когда mm(\R(U)\ + \X\U\)>t. Последнее неравенство эквивалентно условию \R(U)\ + \X\U\^t для любого U С Χ. Π Трансверсалью в У двудольного графа G = (Ху Д, У) называют такую частичную трансверсаль В в У, что \В\ = \Х\, т. е. такую частичную трансверсаль в У, которая может паро- сочетаться со всем множеством X. Следствие 3. Для двудольного графа G = (X, Д, У) существует трансверсаль в У тогда и только тогда, когда \U\ ^ ^ \R(U)\ для любого UCX. Пусть G = (X, Я, У) — произвольный двудольный граф и А С X. Множество D С X \JY называется вершинным покрытием множества А, если любое ребро, соединяющее вершину из А с вершиной из У, имеет не менее одной концевой вершины в множестве D. Следствие 4. Пусть G = (X, Д,У) — произвольный двудольный граф и г — ранговая функция трансверсального матроида T{X,R,Y). Тогда для любого АСХ выполняется: 1) г(А) = \А\ - тахссл «(£/), где S(U) = \U\ - |Я(£7)| - дефект множества £/; 2) г(Л) = min|i)|, где минимум берется по всем вершинным покрытиям D множества А. Доказательство. 1) Вытекает из следующего очевидного равенства, справедливого для любого U С А: (\R(U)\ + \A\U\) + (\U\-\R(U)\) = \A\.
§4.11. Трансеерсальные матроиды 113 2) Пусть ACXuD = XiUY\ — некоторое минимальное вершинное покрытие множества Д где Х\ С А и Υχ С У, Тогда, очевидно, β(Λ\ΛΊ) С Ух и, следовательно, β(Λ\ΛΊ) = = Υχ в силу минимальности Ζλ Поэтому Ζ) = Xi\J,R(A\X\) = = R{U) U (A \ {/), где {/ = А \ Х\. Таким образом, все минимальные вершинные покрытия множества А содержатся среди множеств вида R(U)U(A\U), где U С А, которые все являются вершинными покрытиями множества А. Теперь следствие 4 вытекает из равенства r{A) = mm(R(U) + \A\U\). D UCA Вершинным покрытием двудольного графа G = (X, R, Y) называется такое его множество вершин D, что каждое ребро графа G инцидентно хотя бы одной вершине из D. Иными словами, вершинное покрытие графа G = (X, Д,У) — это вершинное покрытие множества X (а также множества Y). Следующие два утверждения вытекают из следствия 4 при А = X и утверждения 3) следствия 1. Следствие 5 (Оре). В двудольном графе G = (Х,Д, Y) мощность наибольшего по числу ребер паросочетания равна \Х\ - 5, где δ — величина наибольшего из дефектов подмножеств множества X. Следствие 6 (Кениг). В двудольном графе G = (Х,Д,У) мощность наибольшего по числу ребер паросочетания равна мощности наименьшего по числу вершин вершинного покрытия. Важное значение для приложений теории графов имеет интерпретация систем множеств как двудольных графов. Рассмотрим последовательность S = (Si,...,Si) произвольных подмножеств непустого конечного множества У, причем мы допускаем, что некоторые из компонент Si системы множеств S могут повторяться. Положим X = {1,...,/}. Определим двудольный граф G = (X, Д, У), задавая множество ребер R следующим образом: {х,у}е R&yeSx
114 Глава 4. Матроиды для любых χ е X и у е У. Трансверсаль в У графа G = = (X, Д, У) в данном случае обычно называют системой различных представителей системы множеств S. Частичные же трансверсали в У — это системы различных представителей подсистем системы множеств S. Иными словами, подмножество Τ = {3/i,...,3/t} Q У, состоящее из t элементов, будет системой различных представителей некоторой подсистемы из 5, если У\ € SXl,...,yt e SXt для некоторых попарно различных индексов x\,...,xt € X = = {1,...,/}. Если же t = Ζ, то мы получаем систему различных представителей системы множеств S. В качестве примера рассмотрим следующую задачу о свадьбах. Пусть У — некоторое множество девушек, X — некоторое множество юношей и G = (X, Д, У) — двудольный граф знакомств юношей с девушками. При каких условиях всех юношей можно женить таким образом, чтобы каждый из них был бы женат на знакомой ему девушке? Пусть X = {#i,... ,Xf}. Для каждого г = Ι,.,.,ί через S(xi) обозначим множество всех девушек, знакомых с юношей χι. Мы получили систему S = (S(x\),..., S(xi)) подмножеств множества У. Пусть {з/ь... ,зй} ~~ некоторая система различных представителей системы множеств S или, другими словами, трансверсаль в У двудольного графа G = (X, Д, У) такая, что у\ е S(#i),... ,уг е 5(х/). Теперь каждого юношу х* при г = 1,...,/ можно женить на знакомой девушке у*, т.е. задача о свадьбах разрешима. Обратно, если задача о свадьбах разрешима, то система множеств S имеет систему различных представителей, т.е. двудольный граф G = (X,Д,У) имеет трансверсаль в У. Критерий существования системы различных представителей для системы множеств S = (S\,...,Si) легко получить, переформулировав следствие 3: Система различных представителей системы множеств S существует тогда, и только тогда, когда для
\S" 4. ί ί Трансеерсальные матроиды 115 яюбого t = Ι,.,.,ί объединение любых t компонент системы S содержит не менее t элементов. Для непустого конечного множества У, в котором определена функция веса элементов w(y) е R {у € Y), можно рассмотреть задачу поиска максимальной системы различных представителей минимально возможного веса для подсистем системы S. В силу следствия 1 эту задачу решает жадный алгоритм. Однако нетрудно понять, что в данном случае жадный алгоритм является экспоненциальным алгоритмом. В дальнейшем мы покажем, что имеются и полиномиальные алгоритмы для решения этой задачи. Перейдем теперь к рассмотрению важного для дальнейшего обобщения трансверсальных матроидов. Пусть G = (X, Д, Y) — произвольный двудольный граф и на множестве Υ задан некоторый матроид Μ(Υ) с ранговой функцией г. Определим функцию / из V(X) в Νϋ{0}, полагая f(A) = r(R(A)) для любого А С X. Точно так же, как в доказательстве леммы 1, с использованием свойств ранговой функции можно установить, что функция / монотонна, полумодулярна и удовлетворяет условию /(0) = 0. Следовательно, по теореме Эдмондса функция / индуцирует матроид М/(Х) на множестве X. Этот матроид в дальнейшем будет обозначаться через T(X1R1M(Y)). В данном матроиде независимые множества АС X характеризуются условием \U\ ζ r{R(U)) для любого U С А, а ранговая функция задается равенством r(A) = xmn(r(R(U)) + \A\U\) UCA (отметим, что ранговую функцию мы снова обозначаем через г, но это не приведет к недоразумениям). Подмножество А С. X будем называть независимой частичной трансверсалью в X, если оно может паросочетаться с независимым множеством В матроида M(Y).
116 Глава 4. Матроиды Теорема 4.26 (Радо). Пусть G = (X, Д, Y) — произвольный двудольный граф и M(Y) — матроид на множестве Y. Тогда множество А С X является независимой частичной трансверсалью в X в том и только в том случае, когда \U\ ^ r{R(U)) для любого U С А. Доказательство. Импликация =ф очевидна. Действительно, в данном случае А может паросочетаться с некоторым независимым множеством В матроида M(Y). Рассмотрим произвольное подмножество U С А. Оно может паросочетаться с некоторым независимым подмножеством D С В матроида M(Y) и, следовательно, \U\ = \D\,DC R{U) и \U\ ^ r{R{U)). Обратно, пусть \U\ < r(R(U)) для любого U С А. Предположим сначала, что \R{p)\ = 1 для любой вершины ρ € А. Тогда для любых различных p,q e А элементы из R(p) и R(q) различны, так как r(R(p) U R{q)) = r(R({p,q})) ^ 2. Отсюда следует |Л(Л)| = \А\. Поскольку по условию теоремы \А\ ^ r(R{A)) ^ \R{A)l получаем r(R(A)) = \R{A)\9 т.е. множество R(A) независимо в матроиде M(Y). Теперь ясно, что А — независимая частичная трансверсаль в X, которая может паросочетаться с независимым множеством R(A) матроида M(Y). Предположим далее, что имеется вершина ρ е А, для которой \R(p)\ ^ 2. Возьмем две различные вершины q\ и q2 из R(p). Через R\ обозначим множество ребер, полученное из R отбрасыванием всех ребер, соединяющих ρ с q\. Аналогично, обозначим через R2 множество ребер, полученное из R отбрасыванием всех ребер, соединяющих ρ с q2. Покажем, что хотя бы один из двудольных графов G\ = = (X,Ri,Y) и G2 = {X,R2,Y) удовлетворяет условию теоремы. Пусть, от противного, существуют множества U\,U2 С С А\ру для которых r(Rx{pUUi)) < \Ui\ + 1 и r{R2(p U U2)) < \U2\ + 1. Поскольку Rx{p U U{) = (Д(р) \ qx) U R{UX) и R2(p U U2) = = {R(p) \ q2) U R{U2), имеют место соотношения Й1 {р U Ux) U R2{p \JU2) = R{p U Ux U t/2),
# ·/.//. Трансверсальные матроиды 117 Hi(pU Ui) Π Л2(ри £/2) 2 Λ(ί/ι) Π R(U2) 2 Λ(ί/ι Π ί/2). Используя полумодулярность ранговой функции г матроида Л/(У), указанные соотношения и условие теоремы, выводим \Ui\ + \U2\>r(Rl{p\JUl))^r(R2{pUU2))> > r(Ri{p\J иг) U R2{pU U2)) + r(fli(pU £/i) П Я2(ри ϋ2)) > ^ г(Я(р U f/i U t/2)) + r(R(Ui Π t/2)) ^ > 1 + |£7i U t/2| + |£/ι η £72| = 1 + |t/i| + |£/2|, что противоречиво. Таким образом, хотя бы один из двудольных графов G\ — - (X,Ri,Y) и G2 = (X,Д2,У) удовлетворяет условию теоремы. Продолжая применять указанную процедуру отбрасывания ребер к двудольным графам, удовлетворяющим условию теоремы, мы в конце концов придем к двудольному графу G' = (X,R\Y), для которого выполняется условие теоремы, равенство |Д'(р)| = 1 Для любого ρ € А и включение R' С R. Для такого двудольного графа С, как мы установили ранее, множество А является независимой частичной транс- версалью в X. Поскольку Rf С R, множество А будет независимой частичной трансверсалью и для исходного двудольного графа G. D Заметим, что теорема Холла является частным случаем теоремы Радо, если в качестве матроида M(Y) взять свободный матроид на У. Следствие 1. Пусть G = (X, Д, Y) — произвольный двудольный граф и M(Y) — матроид на множестве Y. Тогда семейство независимых частичных трансверсалей в X совпадает с семейством независимых множеств матроида T(X,R,M(Y)). Следующее утверждение доказывается аналогично следствию 2 теоремы Холла. Следствие 2. Пусть G = (X, Д,У) — произвольный двудольный граф и M(Y) — матроид на множестве У с ранговой
118 Глава 4. Матроиды функцией г. В X существует независимая частичная транс- версаль мощности t, где 0 < t ^ |Х|, тогда и только тогда, когда \U\ + t-\X\^r{R{U)) для любого U С X. § 4.12. ДИЗЪЮНКТНОЕ ОБЪЕДИНЕНИЕ И СУММА МАТРОИДОВ В данном разделе мы докажем матроидными методами ряд достаточно глубоких результатов теории графов, которые весьма трудно получить обычными теоретико-графовыми методами. Прежде всего определим две вспомогательные матро- идные конструкции и изучим их свойства. Введем понятие дизъюнктного объединения матроидов. Пусть М\ = М\{Е\),..., Mt = Mt{Et) — произвольный набор матроидов на попарно непересекающихся непустых конечных множествах E\,...,Et. Через В обозначим семейство всех ко- t t нечных подмножеств В С ϋ Ei таких, что В = ϋ Bit где Bi — база матроида Mi для каждого г = 1,...,£. Очевидно, семейство В удовлетворяет аксиомам баз (В.1) и (В.2). Следовательно, существует единственный матроид на множе- t стве ϋ Ei, для которого В является семейством всех баз. Этот матроид называют дизъюнктным объединением матроидов Mi,...,Mt и обозначают через Μι ϋ ... ϋ Mt или t через ϋ Μ^. Матроиды Μι,..., Mt называют компонентами указанного дизъюнктного объединения. Очевидно, матроид циклов любого ненулевого графа есть дизъюнктное объединение матроидов циклов его нетривиальных компонент связности. Поэтому по аналогии с графами матроид называют связным, если его нельзя представить в виде дизъюнктного объединения нескольких его подматроидов. Из определения дизъюнктного объединения легко вытекает
\N 4 12. Дизъюнктное объединение и сумма матроидов 119 t Предложение 4.2. Пусть А = ϋ Aif где Αι С Ει для г—1 каждого г = 1,..., t Тогда: t 1) А — независимое множество матроида 0 Μι в том и только в том случае, когда каждое Ai — независимое множество матроида М^; t 2) г(А) = Σ Гг(Аг), где r,ri,... ,rt — ранговые функции г=1 t матроидов ύ Mit Μι,..., Mt соответственно; г—l t 3) семейство циклов матроида ϋ Μι равно объедине- нию семейств циклов матроидов Μι,...,Mt. Пусть теперь М\ = Μχ(Ε),..., Mt = Mt(E) — произвольный набор матроидов на непустом конечном множестве Ε и ''ь···,^ — их ранговые функции соответственно. Очевид- t но, функция / = Στί является монотонной полумодулярной функцией из V{E) в N U {0} и /(0) = 0. Матроид Mf{E), индуцированный функцией / на множестве Е, называют суммой матроидов Μχ,..., Mt и обозначают через М\ Η h Mt t или через Σ Μ*. По теореме Эдмондса ранговая функция г t матроида ^ М* удовлетворяет соотношению г(Л) = тт(5>([/) + |Л\С/|) - г=1 для любого АСЕ. Теорема 4.27. Пусть: 1) Μι = Μι(£),...,Mt = Mt{E) — матроиды на непустом конечном множестве Ε и г\,..., rt — их ранговые функции соответственно; 2) М{ = М[(Е\),...,Μ/ = M't{Et) — матроиды на попарно непересекающихся непустых конечных множествах
120 Глава 4. Матроиды E\,...,Et и г[,..., г[ — их ранговые функции соответственно; 3) фг — изоморфизм матроида Mi на матроид М[ для каждого г = 1,... ,£. t Зададим двудольный граф G = (Е, Д, ύ Εχ), полагая г=1 R = {{p,(t>i(p)}\p£E,i = l,. ..,<}· Тогда Л е YtMi = T(E,R,UM!). Доказательство. Обозначим через г' ранговую функцию t t матроида ϋ М[. Матроид Т(Е, Д, ϋ МЛ, согласно определе- г=1 г=1 нию из предыдущего раздела, индуцируется на Ε монотонной полумодулярной функцией f(A) = r'(R(A))(A С Ε). Ясно, что для любого изоморфизма φι и для любого АСЕ имеет место г<(<ДДЛ)) = Г{(А). Используя этот факт, выводим f(A) = r'(R(A)) = r'(.U 4ц(А)) = £><ША)) = £>(A), т.е. функции / и Σ'=1γ» совпадают. Отсюда следует заключение теоремы. D t Теорема 4.28 (Нэш-Вильямс). Пусть Σ % — сумма г=1 матроидов Μχ = Mi(E),...,Mt = Mt{E) и ru...,rt — их ранговые функции соответственно. Тогда для любого А С С Ε следующие условия эквивалентны: t 1) А — независимое множество матроида Σ М^ г=1 t 2) А = (J Aif где каждое Αι — независимое множество матроида М^ t 3) А = ϋ Αι, где каждое Αι — независимое множество г—I матроида М*.
§ 4Λ2. Дизъюнктное объединение и сумма матроидов 121 Доказательство. Импликация 3) => 2) очевидна. t 2) =ф 1). Положим / = Σ Гг. Возьмем произвольное под- t t множество U С А = (J Ai. Тогда t/ = |J Ui для некоторых г=1 г=1 Щ С Ai (г = 1,..., £). Следовательно, t t t м < Σ м = Σγ^) < 5>w=^)- ί=1 г=1 г=1 т.е. \U\ < /(£/) для любого U С А. Полученное и означает, t что Л — независимое множество матроида Μ/ = Σ Μ 1) =» 3). Возьмем изоморфные копии М{ = А/{(й),... . ..,Mt' = Mft(Et) матроидов Mi,...,Aft соответственно на попарно непересекающихся непустых конечных множествах E\,...,Et. Для каждого г = 1,..., t зафиксируем изоморфизм & матроида М< = М<(£) на матроид М/ = М'г\Ег). По теореме 4.27 TMi(E) = T(E,R1 0 Ml(Ei))> t где G = (Е, Д, ύ Si) — двудольный граф, указанными тео- реме 4.27. t Пусть А — независимое множество матроида ^2Ut{E). Тогда в силу предыдущего равенства матроидов и слеиствия 1 теоремы Радо множество А является независимой частичной трансверсалью в Е. Следовательно, существует такое t инъективное отображение ψ из А в 0 Eiy что {α,φ)} € € R для любого а е А и ψ(Α) — независимое множество t t матроида ύ M'AEi). Ясно, что ^(Л) = ύ Л<, гдеА£ = г=1 г=1 = Ei Π V>(^) Для любого г = 1,... ,ί. В силу предложения 4.2 каждое множество А\ независимо в матроиде М/(ф). Для каждого г = !,...,£ возьмем множество Ai С Ε такое, что
122 Глава 4. Матроиды φ{Αι) — А\. Очевидно, ввиду инъективности отображения ψ t множество А = 0 Αι есть объединение попарно непересека- г=1 ющихся множеств А{. Поскольку {α, ψ{α)} е R для любого а е А, по определению ребер из R равенство ^{Аг) = А!{ влечет равенство фг(Лг) = Ai для любого г — 1,...,£. Так как фг — изоморфизм матроида Mi на матроид М[, отсюда следует, что Ai — независимое множество матроида Mi для любого t = Ι,.,.,ί. Теорема доказана. D Отметим, что в силу этой теоремы независимые множества суммы матроидов устроены аналогично тому, как устроены независимые множества дизъюнктного объединения матроидов. Поэтому сумму матроидов иногда называют объединением матроидов. Заметим, однако, что указанная аналогия не имеет места для баз, циклов и ранговых функций. Следствие 1. Пусть Μ = Μ (Ε) — произвольный матроид на непустом конечном множестве Е, г — его ранговая функция и t g N. Тогда матроид Μ имеет t попарно непересекающихся баз в том и только в том случае, когда \E\A\>t-(r(E)-r(A)) для любого АСЕ. Доказательство. Обозначим через t · Μ сумму t экземпляров матроида М. Этот матроид индуцируется функцией / = t · г на множестве Е. Пусть г' — его ранговая функция. По теореме Нэш-Вильямса r'(t-M) < t-r(M). Поэтому матроид Μ имеет t попарно непересекающихся баз тогда и только тогда, когда r'(t · Μ) = t · г(М), т. е. когда mm(t.r(A) + \E\A\) = t.r(E). Последнее равенство эквивалентно условию t-r(A) + \E\A\>t-r(E) для любого АСЕ. Отсюда вытекает заключение следствия. D
ψ' 4.12. Дизъюнктное объединение и сумма матроидов 123 Числом упаковки раск(М) матроида Μ = М(Е) называют наибольшее число попарно непересекающихся баз в М. Следствие 2. Пусть Μ = М(Е) — произвольный матроид. Тогда раск(М) = min I .if^l.J = £;^AeSubjE;Lr(E) - r(A)J где Sub Я — решетка листов матроида М. (Здесь через [х\ обозначается наибольшее целое число, меньшее или равное числу х.) Доказательство. Заметим сначала, что для любого А С Ε такого, что г(А) < г(Е), выполняется \Е\(А)\ \E\A\ r{E)-r{(A)) ^ г(Е)-г(АУ так как г(А) = г((А)). Теперь осталось воспользоваться следствием 1. D Следствие 3. Пусть Μ = М(Е) — произвольный матроид на непустом конечном множестве Е% г — его ранговая функция и t G N. Тогда множество Ε представимо в виде объединения t баз матроида Μ в том и только в том случае, когда \A\^t-r(A) для любого непустого АСЕ. Доказательство. Опять рассмотрим матроид t · Μ, равный сумме t экземпляров матроида М. Через г' обозначим его ранговую функцию. Множество Ε представимо в виде объединения t баз матроида Μ тогда и только тогда, когда r'(t · Μ) = \Е\, т. е. когда m\n(t.r(A) + \E\A\) = \E\.
124 Глава 4. Матроиды Последнее равенство эквивалентно условию \E\^t-r(A) + \E\A\ для любого непустого АСЕ. Отсюда вытекает заключение следствия. D Числом покрытия cov(M) матроида Μ = М(Е) будем называть наименьшее число баз, объединение которых равно Е. Ясно, что это понятие имеет смысл рассматривать лишь для матроидов без петель, т. е. элементов, составляющих одноэлементные циклы. Следствие 4. Пусть Μ = М(Е) — матроид без петель и Sub Ε — его решетка листов. Тогда cov(M) = max Q^ACE (Здесь через \х] обозначается наименьшее целое число, большее или равное числу х.) Доказательство. Заметим сначала, что для любого непустого АСЕ выполняется \А\ \{А)\ г(А)^г((А)У так как г(А) = г((А)). Осталось воспользоваться следствием 3. D Пусть G = (V, Е) — произвольный ненулевой граф и4- непустое подмножество ребер из Е. Через G(A)y как прежде, мы будем обозначать подграф графа G, порожденный множеством ребер Л, а через r{G{A)), n{G(A))9 m(G(A)) и k{G(A)) будем обозначать соответственно ранг, число вершин, число ребер и число компонент связности графа G(A). Конечно, выполняются равенства m(G(A)) = |<А| и r(G(A)) = n(G(A)) — -k(G(A)). Теорема 4.29. Пусть G = (V, Е) — произвольный ненулевой {п,т,к)'граф и t € N. Граф G имеет t реберно непересекающихся остовов тогда и только тогда, когда \Л\ 1 Г \А\ -у-тт = max -7Т\
§ 4Ί2. Дизъюнктное объединение и сумма матроидов 125 ι ιι ^ t · (п — к) и для любого непустого множества ребер АСЕ выполняется m^t-{n-k) + \A\-t· {n{G{A)) - k{G{A))). Доказательство. Применим следствие 1 к матроиду циклов M(G) графа G. Базами этого матроида являются множества ребер, образующие остовы графа G. При А = 0 неравенство из следствия 1 примет вид \Е\ ^ t · (η - fc), т.е. in ^ t · (η - к). Для непустого же множества ребер А С Ε это неравенство записывается в виде m-\A\^t-(n-k- r{G{A))), поскольку r(A) = r(G(A)). Отсюда вытекает заключение теоремы. D Теорема 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)). Отсюда вытекает заключение теоремы. D Следующее утверждение можно вывести очевидным образом как из теоремы 4.29, так и из теоремы 4.30. Следствие 5. Пусть G = (V, Е) — произвольный ненулевой (n, m, А:)-граф и t € N. Тогда граф G является объединением t реберно непересекающихся остовов в том и только в том случае, когда т = t · (п - к) и для любого непустого
126 Глава 4. Матроиды множества ребер АСЕ выполняется \A\^t-(n(G(A))-k(G(A))). Пусть G = (V,E) — связный граф без петель. Числом дре- вовидности arb(G) графа G называется наименьшее число остовных деревьев, объединение которых равно G. Очевидно, число древовидности графа G совпадает с наименьшим числом его поддеревьев, объединение которых равно G, так как каждое поддерево связного графа содержится в некотором его остовном дереве. Ясно также, что число древовидности связного графа G совпадает с наименьшим числом реберно непересекающихся лесов, в объединение которых распадается граф G. Теорема 4.31 (Нэш-Вильямс). Пусть G = (V,E) — связный неодноэлементный граф без петель. Для каждого натурального числа t < \V\ обозначим через m(t,G) наибольшее возможное число ребер в связном подграфе графа G, содержащем t вершин. Тогда m{t,G) ип\ \m(t,G arb(G) = max — 2^t^|V| t - 1 Доказательство. Применим следствие 4 к матроиду циклов M(G) графа G. Покажем сначала, что, применяя следствие 4, мы можем ограничиться рассмотрением только тех непустых множеств ребер А С Е, для которых G(A) является связным графом. Действительно, пусть граф G(A) есть дизъюнктное объединение своих компонент связности G\ = (Vi,j4i),...,G* = = (Vk,Ak) и щ = |Vi|,...,n* = |Vib|,mi = |j4i|,..., mk = = \Ak\. Поскольку Α -φ 0, каждой вершине из G(A) инцидентно хотя бы одно ребро и, следовательно, ηι,.,.,η* ^ 2. 772 * Положим ώ = г— для г = 1,.... А; и d = max ώ. Тогда, щ - 1 Kt^fc используя равенства r(G(A)) = r(G\) Η hr(Gfc) = щ — 1 + Η l· пк — 1, выводим
§ 4.12. Дизъюнктное объединение и сумма матроидов 127 \А\ _ mi Η l· mk _ r{A) ~~ηι-1 + ··· + η*-1~~ = di(ni - \) + --' + dk(rik ~ 1) < ni-lH l-nfc-1 ^ d(ni-l) + ...+d(nfe_l) ι^ι ζ = α = max . . . . πχ — 1 Η h η^ - 1 Uia г(^) Из доказанного и следствия 4 вытекает заключение теоремы. D Пример. Рассмотрим полный граф Кп при η ^ 2. Очевидно, m(t,Kn) = t(t — l)/2 для любого натурального числа £ < п. В силу теоремы Нэш-Вильямса arb(Kn) = \п/2]. Таким образом, полный граф Кп представим в виде объединения \п/2] деревьев и не представим в виде объединения меньшего числа деревьев. Иными словами, полный граф Кп можно представить в виде объединения \п/2\ реберно непересекающихся лесов и нельзя представить в виде объединения меньшего числа реберно непересекающихся лесов. Заметим, что граф, изображенный на рис. 24, является объединением двух деревьев (и даже простых незамкнутых цепей). Однако он не может быть представлен в виде объединения двух реберно непересекающихся деревьев. >-< Рис. 24 Возникает вопрос: можно ли полный граф Кп представить в виде объединения \п/2] реберно непересекающихся деревьев? Ответ на этот вопрос положительный. Действительно, рассмотрим полный граф Кп при η ^ 2. Если число η нечетно, то \п/2] = (п + 1)/2 = (п - 1)/2 + 1, поэтому, отбросив из
128 Глава 4. Матроиды Кп одну из вершин вместе со всеми инцидентными ей ребрами, мы сводим нашу задачу к полному графу Кп-\ с четным числом вершин. Рис. 25 Пусть теперь число η четно. Граф Кп содержит m = = п(п — 1)/2 ребер, а любой его остов содержит η — 1 ребер. Поскольку Кп представим в виде объединения п/2 остовов, в силу отмеченного Кп представим в виде дизъюнктного объединения п/2 остовов. На рис. 25 показано разбиение графа Κη на 4 дерева, одно из которых есть остовное дерево графа К?, составленное из всех ребер, инцидентных вершине υ, а три других — остовные деревья (и даже цепи) графа К% = К7 - υ.
Глава 5 ПЛАНАРНОСТЬ § 5.1. УКЛАДКИ ГРАФОВ, ПЛАН АРНЫЕ ГРАФЫ Пусть имеется некоторое пространство С (евклидова плоскость, трехмерное евклидово пространство, сфера в трехмерном евклидовом пространстве, тор и т. п.)» в котором определено понятие жордановой кривой, т. е. непрерывной кривой без точек самопересечения. Жордановы кривые на плоскости обладают следующим важным свойством. Если L — замкнутая жорданова кривая на плоскости и щу — две различные точки на ней, то любая жорданова кривая, соединяющая и и υ, либо целиком лежит внутри области, ограниченной кривой L, за исключением точек и и υ, либо — вне этой области, за исключением точек и и vt либо пересекает L в некоторой точке, отличной от и и υ. Замкнутая жорданова кривая L разбивает множество не принадлежащих ей точек плоскости на две области — внутреннюю и внешнюю, причем любая жорданова кривая, соединяющая точку внутренней области с точкой внешней области, обязательно пересекает кривую L, т. е. имеет с ней общую точку. Обсуждение свойств жордановых кривых можно найти в учебниках по университетскому курсу математического анализа. Говорят, что граф обладает укладкой в пространстве £, если он изоморфен графу, вершинами которого являются некоторые точки пространства, а ребрами — жордановы кривые из £, соединяющие соответствующие вершины, причем:
130 Глава 5. Планарность 1) кривая, являющаяся ребром, не проходит через другие вершины графа, кроме вершин, которые она соединяет; 2) две кривые, являющиеся ребрами, пересекаются лишь в вершинах, инцидентных одновременно обоим этим ребрам. В таком случае кратко говорят, что кривые, представляющие ребра, «не имеют лишних пересечений». Соответствующий граф, составленный из точек пространства и жордано- вых кривых, называют укладкой исходного графа. Теорема 5.1. Любой граф обладает укладкой в трехмерном евклидовом пространстве. Доказательство. Построим укладку для заданного графа. Возьмем в пространстве некоторую прямую / и рассмотрим пучок плоскостей, проходящих через I. Вершинам графа поставим в соответствие взаимно однозначным образом некоторые точки прямой /. Для каждого ребра графа выделим отдельную плоскость, проходящую через I. Изобразим ребро графа в его плоскости полуокружностью, соединяющей две соответствующие концам ребра точки прямой /, если ребро не является петлей, и — окружностью, проходящей через точку, соответствующую вершине v> если ребро является петлей в вершине v. Очевидно, мы получим укладку исходного графа. D Как мы увидим далее, не всякий граф обладает укладкой на евклидовой плоскости. Граф называется планарным, если он обладает укладкой на плоскости. Всевозможные укладки планарных графов на плоскости будем называть плоскими графами. Теорема 5.2. Граф G планарен тогда и только тогда, когда он обладает укладкой на сфере. Доказательство. Рассмотрим укладку графа G на сфере. Возьмем на сфере точку JV, не лежащую ни на одном из ребер укладки и не являющуюся вершиной. Назовем точку N северным полюсом. В южном полюсе (который определяется естественным образом) проведем касательную плоскость к сфере. Спроектируем из точки N на плоскость все точки сферы, проводя все возможные лучи из N через точки сферы до
§ 5. I. Укладки графов, планарные графы 131 плоскости. Ясно, что проекция укладки на сфере даст нам укладку исходного графа на плоскости. Обратно, рассмотрим укладку графа G на плоскости. Возьмем сферу, которая касается данной плоскости. Назовем точку касания южным полюсом. Северный полюс обозначим через N. Спроектируем теперь все точки плоскости на сферу, проводя всевозможные лучи от точек плоскости через точки сферы до точки N. Ясно, что при этом укладка графа G с плоскости будет перенесена на некоторую укладку графа G на сфере. D Плоский граф G разбивает плоскость на несколько областей, называемых его гранями. Более точно, рассмотрим множество точек, дизъюнктных к G, т. е. не являющихся вершинами и не лежащих на ребрах плоского графа G. Определим отношение ρ на множестве точек, дизъюнктных к G, полагая upv в том и только в том случае, когда и можно соединить с υ жордановой кривой, целиком состоящей из точек, дизъюнктных к G. Ясно, что отношение ρ является отношением эквивалентности, у которого имеется конечное число классов. Эти классы и называют гранями плоского графа G. Отметим, что одна из граней неограничена. Ее называют внешней гранью, а остальные грани называют внутренними гранями. На рис. 26 изображен плоский граф, имеющий 6 граней, которые обозначены буквами от А\ до А6, причем Ав — это внешняя грань. О \ Рис. 26 Далее плоский (n,m, А;)-граф, имеющий / граней, будем называть (n, m, fc, f У графом. Отметим, что понятие грани для укладок графа на сфере вводится аналогичным образом.
132 Глава 5. Планарность Лемма 1. Для любого выделенного ребра планарного графа найдется такая укладка этого графа на плоскости, что выделенное ребро будет лежать на границе внешней грани. Доказательство. Сначала возьмем укладку графа на сфере. Потом в качестве северного полюса выберем дизъюнктную точку N в грани, на границе которой лежит выделенное ребро. Затем спроектируем из N укладку на сфере на укладку на плоскости, касательной к сфере в южном полюсе. Полученная укладка на плоскости обладает нужным нам свойством. D Лемма 2. Если к планарному графу добавить новую петлю или увеличить кратность одного из ребер, то получится планарный граф. Доказательство. Используя лемму 1, возьмем такую укладку графа на плоскости, что выделенная вершина или выделенное ребро лежит на границе внешней грани. Затем, пользуясь свойствами жордановых кривых, проводим во внешней грани требуемое ребро. D § 5.2. ФОРМУЛА ЭЙЛЕРА ДЛЯ ПЛОСКИХ ГРАФОВ Теорема 5.3. Пусть G — плоский (n, га, &, /)-граф. Тогда га — n + fc = / — 1. Доказательство. Если га = О, то η' = к и / = 1, поэтому доказываемая формула справедлива. Пусть формула верна для любого плоского графа, содержащего менее га ребер, и га > 0. Рассмотрим плоский (n, га, fc, /)-граф G. Предположим, что в графе G имеется ребро е, не являющееся мостом. Тогда оно содержится в некотором цикле и поэтому обязательно лежит на границе двух граней. Очевидно, если удалить из графа ребро е, то эти две грани сольются в одну грань. Следовательно, граф G — е — это плоский (n, m — 1, к, / — 1)-граф. Тогда по предположению индукции / - 2 = (т - 1) - η + fc, τ. е. f -\—m — n + k.
$ 5.2. Формула Эйлера для плоских графов 133 Предположим теперь, что все ребра графа G являются мостами. Тогда G является лесом и в G имеется висячее ребро е. Очевидно, при удалении ребра е число граней графа не изменяется. Следовательно, граф G — е — это плоский (п, га — - 1, к 4-1, /)-граф. Тогда по предположению индукции / - 1 = = (га - 1) - η + {к + 1) = га - η + к. D Заметим, что в доказанной теореме утверждается, что цик- ломатическое число плоского графа равно числу его внутренних граней. В такой формулировке эту теорему можно доказать следующим образом, используя пространство циклов графа G. Легко понять, что каждой внутренней грани плоского графа G отвечает вектор пространства циклов L(G), состоящий из ребер, отделяющих эту внутреннюю грань от других граней. Такой вектор называют циклическим вектором, отвечающим данной грани. Очевидно, симметрическая разность любого набора таких векторов не пуста, так как она совпадает с границей области, равной объединению соответствующих граней, τ е. набор всех векторов, отвечающих внутренним граням, является линейно независимым. Кроме того, для любого цикла С графа G область, лежащая внутри цикла С, является объединением некоторого множества внутренних граней, поэтому цикл С является симметрической разностью векторов, отвечающих внутренним граням из этого множества. Следовательно, совокупность всех /—1 векторов, отвечающих внутренним граням графа G, есть базис пространства L(G). Поскольку dim L(G) = r*(G) = т — η + к, получаем / — 1 = га — -η + k. Следствие 1 (Эйлер, 1752). Пусть η, га и / — соответственно число вершин, ребер и граней некоторого выпуклого многогранника в трехмерном евклидовом пространстве. Тогда п — га + / = 2. Доказательство. Спроектируем многогранник на сферу, внутри которой он лежит, проводя всевозможные лучи из точки, лежащей внутри многогранника. На сфере возникнет
134 Глава 5. Планарность (n,m, 1,/)-граф. Применяя к нему теорему, получим требуемое равенство. D Следствие 2. Пусть G — связный планарный обыкновенный (п,т)-граф ип^З. Тогда т ^ Зп — 6. Доказательство. Можно считать, что G — плоский граф. Поскольку G является обыкновенным графом, каждая его грань граничит не менее чем с тремя ребрами. Пусть, двигаясь вдоль границы г-й грани, мы пройдем U ребер, где г = 1,..., / и / — число граней графа G. Очевидно, 1\ Η l·// = 2m. Так как U ^ 3 для г = 1,...,/, мы получаем 3/ ^ 2т. Поскольку в силу теоремы / = т — η + 2, отсюда вытекает Зш — Зп + 6 = = 3/ ^ 2т, т. е. т ^ Зп - 6. D Следствие 3. Граф Кз,з непланарен. Доказательство. Пусть граф Хз,з планарен. Будем считать его плоским графом. Поскольку Хз,з является двудольным графом, все его замкнутые маршруты имеют четную длину. Далее, рассуждая как в доказательстве следствия 2, получаем U ^ 3, откуда вытекает U ^ 4 для г = 1,...,/и4/^ 2т, т.е. 2/ ^ т. В силу теоремы / = 9-6 + 1 + 1 = 5, поэтому Ю = 2/ ^ m = 9. Пришли к противоречию. D Рассмотрим следующую популярную задачу-головоломку. На одной стороне улицы имеются три дома, а на противоположной — три колодца. Три соседа, живущих в этих домах, поссорились и решили протоптать тропинки от каждого дома к каждому колодцу таким образом, чтобы тропинки не пересекались (рис. 27). Могут ли они сделать это? Следствие 3 говорит нам, что сделать это невозможно. Следствие 4. Граф К$ непланарен. Доказательство. Граф К*> имеет 5 вершин и 10 ребер. Если он планарен, то по следствию 2 получаем 10 ^ 3-5-6 = = 9, что невозможно. D Следствие 5. В любом планарном обыкновенном графе имеется вершина, степень которой меньше или равна 5.
§ 5.3. Критерий планарности графа 135 Рис. 27 Доказательство. Без ограничения общности можно считать, что граф G связен и число его вершин η больше или равно 7. Пусть т — число его ребер. Если degv ^ 6 для любой вершины vy то в силу леммы о рукопожатиях и следствия 2 выполняется 6n ^ Y^aegv = 2т ^ 2(3п - 6) = 6п - 12, что противоречиво. D § 5.3. КРИТЕРИЙ ПЛАНАРНОСТИ ГРАФА Будем говорить, что граф G' получен из графа G включением вершины степени 2, если в графе G одно из ребер е = uv (равенство и = ν не исключается) заменено на два новых ребра е\ = uw и ег = wvt где w — новая вершина степени 2, а остальные вершины и ребра остались без изменения. На рис. 28 показан пример получения графа с помощью процедуры включения вершины степени 2. Рис. 28
136 Глава 5. Планарность Процедура, обратная к процедуре включения вершины степени 2, называется исключением вершины степени 2. Будем говорить, что граф G\ гомеоморфен графу (?2. если G\ можно получить из Gi с помощью конечного числа применений процедур включения и исключения вершин степени 2. Ясно, что отношение «быть гомеоморфными» является отношением эквивалентности для графов. Очевидно, если граф планарен, то любой граф, гомеоморфный его подграфу, также планарен. На рис. 29 изображен граф Петерсена G и его подграф Н. Так как граф Η гомеоморфен Аз,з> граф Петерсена непланарен (см. следствие 3 предыдущего раздела). G Η Рис. 29 Теорема 5.4 (Понтрягин, Куратовский). Граф планарен тогда и только тогда, когда он не содержит подграфов, гомеоморфных К$, и не содержит подграфов, гомеоморф- ных Хз,з· Доказательство. Необходимость условия теоремы вытекает из следствий 3 и 4 предыдущего раздела. Будем доказывать достаточность условия теоремы. Предположим, от противного, что существует непланарный граф, который не содержит подграфов, гомеоморфных К$ или #з,з- Пусть G — такой граф с наименьшим возможным числом ребер, не содержащий изолированных вершин. Дальнейшие рассуждения разобьем на несколько этапов. 1) Заметим сначала, что граф G связен. Действительно, если граф G не связен, то его компоненты связности планарны и, следовательно, сам граф G планарен.
§ 5.3. Критерий планарности графа 137 2) Покажем, что граф G является обыкновенным графом. В самом деле, пусть в графе G имеется петля или кратное ребро е. Тогда граф G — е планарен. Добавляя к графу G — е ребро е, в силу леммы 2 из первого раздела мы получим, что граф G планарен. 3) Покажем теперь, что граф G является блоком, т. е. в G нет точек сочленения. Отметим, что тогда в графе G нет и мостов, так как в любом блоке, содержащем не менее трех вершин, все ребра являются циклическими. Пусть, от противного, в графе G имеется точка сочленения v. Через G\ обозначим подграф графа G, порожденный вершинами одной из компонент связности графа G — ν и вершиной ν% а через Gi — подграф графа G, порожденный вершинами остальных компонент связности графа G — ν и вершиной υ (рис. 30). Рис. 30 Возьмем укладку графа G\ на плоскости такую, что вершина ν лежит на границе внешней грани. Затем во внешней грани графа G\ возьмем укладку графа Gi такую, что вершина ν лежит на границе внешней грани; отметим, что вершина ν будет представлена на плоскости в двух экземплярах (рис. 31). Рис. 31 Соединим два экземпляра вершины ν пучком жордано- вых линий, не допуская лишних пересечений с укладками
138 Глава 5. Планарность графов G\ и Сг, состоящим из такого количества линий, какова степень вершины ν в графе G2. Далее отбросим вхождение вершины υ в граф Сг, заменяя инцидентные ей ребра на жордановы линии, полученные из линий указанного пучка и ребер (рис. 32). Рис. 32 Таким образом, мы получили укладку графа G на плоскости, что невозможно. Итак, мы доказали 3). Пусть е = аЬ — произвольное ребро графа G. Зафиксируем его. В силу минимальности графа G граф Gr = G—e планарен. Отметим, что граф Gf к тому же и связен, так как в исходном графе G нет мостов. 4) Докажем, что в графе G' существует цикл, содержащий вершины а и Ь. Пусть α и Ь лежат в одном блоке В графа G'. Если \VB\ ^ ^ 3, то по теореме о свойствах блока существует цикл графа G', содержащий а и Ь. Если |\ЛВ| = 2, то в В имеется ребро е' = ab, но тогда в G имеются кратные ребра е и е', что противоречит 2). Осталось рассмотреть случай, когда а и Ь лежат в разных блоках графа G*. Покажем, что этот случай невозможен. Итак, пусть а и Ь лежат в разных блоках графа G'. Тогда в G' существует точка сочленения г;, принадлежащая любой простой (а,Ь)-цепи графа G' и отличная от а и Ь. Через GJ обозначим подграф графа G', порожденный вершиной ν и вершинами компоненты связности графа G' — ν> содержащей а, а через G'2 — подграф графа G', порожденный вершиной ν и вершинами остальных компонент связности графа G' — ν (в этом множестве лежит вершина Ь). Пусть G" = G[ + еь где
$ 5.3. Критерий планарности графа 139 г, = αν — новое ребро, и G2 = G2 + е2у где е2 = vb ребро (рис. 33). новое Рис. 33 Заметим, что в графе G'{ ребер меньше, чем в графе G. Действительно, вместо ребра е в G'{ есть ребро е\ и часть ребер из графа G осталась в графе G2. Аналогично, в графе G2 ребер меньше, чем в графе G. Покажем далее, что в графе G" и, аналогично, в графе G2 нет подграфов, гомеоморфных Къ или Хз,з· Действительно, если в G" имеется такой подграф, то в этом подграфе присутствует вновь присоединенное ребро, но это ребро е\ можно заменить на цепь взяв некоторую простую (6,г;)-цепь Р2 в графе G'2. Следовательно, мы получили подграф в G, гомеоморфный К$ или #з,з. что невозможно. Теперь в силу минимальности графа G графы G" и G2 планарны. Возьмем укладку графа G'{ на плоскости такую, что ребро е\ = αν лежит на границе внешней грани Во внешней грани графа G'{ возьмем укладку графа G2 такую, что ребро е2 = vb лежит на границе внешней грани (рис. 34). G"© Рис. 34 Отметим, что опять вершина ν представлена на плоскости в двух экземплярах. Очевидно, добавление ребра е = ab не
140 Глава 5. Планарность меняет планарности графа G" U G%. Склеим оба вхождения вершины ν точно так же, как мы это сделали в доказательстве утверждения 3) (рис. 35). Рис. 35 Сотрем затем ранее добавленные ребра е\ и ег- В результате мы получим укладку графа G на плоскости, что невозможно. Итак, мы доказали утверждение 4). Среди всех укладок графа G' на плоскости и среди всех циклов С, содержащих а и Ь, зафиксируем такую укладку и такой цикл, что внутри области, ограниченной циклом С, лежит максимальное возможное число граней графа G'. Зафиксируем один из обходов по циклу С (на рисунках будем рассматривать обход по часовой стрелке по циклу С). Для вершин им цикла С через C[w,i;] будем обозначать простую (и,г;)-цепь, идущую по циклу С от и до ν в направлении обхода цикла. Конечно, С[и,г;] φ C[v,u]. Положим C(uyv) = = C[w,i;] \ {w,i;}, т.е. C(u,v) получено из C[w,i;] отбрасыванием вершин и и v. Внешним графом (относительно цикла С) будем называть подграф графа G', порожденный всеми вершинами графа G', лежащими снаружи от цикла С. Компоненты связности внешнего графа будем называть внешними компонентами. В силу связности графа G' для любой внешней компоненты должны существовать ребра в G', соединяющие ее с вершинами цикла С. Внешними частями будем называть (рис. 36): а) внешние компоненты вместе со всеми ребрами, соединяющими компоненту с вершинами цикла С, и инцидентными им вершинами;
§ 5.3. Критерий планарности графа 141 б) ребра графа С, лежащие снаружи от цикла С и соединяющие две вершины из С, вместе с инцидентными такому ребру вершинами. Аналогично определяются внутренний граф, внутренние компоненты и внутренние части (относительно цикла С). Будем говорить, что внешняя (внутренняя) часть встречает цикл С в своих точках прикрепления к циклу С. 5) Докажем, что любая внешняя часть встречает цикл С точно в двух точках, одна из которых лежит в С(а,Ь), а другая — в С(Ь,а). Если внешняя часть встречает цикл С точно в одной точке vy то ν является точкой сочленения графа G, что невозможно (рис. 37). Рис. 37 Таким образом, внешняя часть встречает цикл С не менее чем в двух точках. Если внешняя часть встречает цикл С в двух точках из С[а,Ъ] (случай С[Ь,а] рассматривается аналогично), то в G' имеется цикл, содержащий внутри себя больше граней, чем цикл С, и проходящий через α и Ь, что невозможно (рис. 38).
142 Глава 5. Планарность 'Сш Рис. 38 Рис. 39 Опираясь на сделанные замечания, теперь легко завершить доказательство утверждения 5). Ввиду утверждения 5) будем говорить, что любая внешняя часть является (а,Ь)-разделяющей частью, поскольку она встречает и C(a1b)f и С{Ъ,а). Аналогично можно ввести понятие (а, Ь)-разделяющей внутренней части. Заметим, что внутренняя часть может встречать цикл С, вообще говоря, более чем в двух точках, но не менее чем в двух точках. 6) Докажем, что существует хотя бы одна (а, ^-разделяющая внутренняя часть. Пусть, от противного, таких внутренних частей нет. Тогда, выходя из α внутри области, ограниченной С, и двигаясь
\V 5 3. Критерий планарности графа 143 нблизи от С по направлению обхода С и вблизи от встречающихся внутренних частей, можно уложить ребро е = ab внутри цикла С (рис. 39), т.е. G — планарный граф, что невозможно. Итак, мы установили утверждение 6). 7) Покажем, что существует внешняя часть, встречающая С(а, Ь) в точке с и С(Ь,а) — в точке d, для которой найдется внутренняя часть, являющаяся одновременно (а, ^-разделяющей и (с, с^-разделяющей. На рис. 40 показан пример ситуации, указанной в этом утверждении. ь Рис. 40 Пусть, от противного, утверждение 7) неверно. Упорядочим (а,Ь)-разделяющие внутренние части в порядке их прикрепления к циклу С при движении по циклу от о до Ь и обозначим их соответственно через /ηι,/η2,— Пусть щ и и2 — первая и последняя вершины из С(а,Ъ), в которых 1п\ встречает цикл С, a ν\ и v2 — первая и последняя вершины из С(Ь,а)у в которых 1п\ встречает цикл С (возможно, вообще говоря, и\ = и2 или v\ = v2). Поскольку 7) неверно, для любой внешней части обе ее вершины, в которых она встречает С, лежат либо на C[v2lui]t либо на C[u2,v\]. Тогда снаружи от цикла С можно провести жорданову кривую Р, не пересекая ребер графа С, соединяющую v2 с щ (рис. 41).
144 Глава 5. Планарность Рис. 41 Поскольку на участках С(и\,U2) и C(v\,V2) нет точек прикрепления внешних частей, используя жорданову кривую Р, внутреннюю часть 1п\ можно перебросить («вывернуть» наружу от цикла С) во внешнюю область от цикла С, т. е. уложить ее снаружи от цикла С и сделать ее внешней частью. Аналогично все остальные (а,Ь)-разделяющие внутренние части можно перебросить во внешнюю область от цикла С. После этого точно так же, как в доказательстве утверждения 6), ребро е = аЬ можно уложить внутри цикла С, так как не останется (а,Ь)-разделяющих внутренних частей. Следовательно, мы получим укладку графа G, что невозможно. Итак, мы доказали утверждение 7). Обозначим через In внутреннюю часть, которая является одновременно (а,Ь)-разделяющей и (с,й)-разделяющей, где с и d — точки прикрепления к циклу С некоторой внешней части J, причем с лежит на C(a,b)t a d — на С(Ь,а) (рис. 42). Отметим, что во внешней части J есть простая (cf, с)- цепь Р. Обозначим через и\ и и<ь вершины, в которых In встречает соответственно С(а,Ь) и С(Ъ,а), а через v\ и v^ —
§ 5.3. Критерий планарности графа 145 ь Рис. 42 вершины, в которых In встречает соответственно C(c,cf) и C(d,c) (рис. 43). Рис. 43 Дальнейшие рассуждения разобьем на два случая. 1. Пусть пара вершин v\ и v2 является (а, 6)-разделяющей. Тогда, в частности, ν2 φ а и νι φ b. Легко понять, что в этом случае граф G содержит подграф, гомеоморфный Кз,з (отметим, что в In существует простая (г;1,г;2)-цепь) (рис. 44). Рис. 44
146 Глава 5. Планарность 2. Пусть пара вершин v\ и v2 не является (а, ^-разделяющей. Тогда г>ь v2 лежат на С[а,Ь] или v\t υ2 лежат на С[Ь,а]. Без ограничения общности будем считать, что ν\ и υ2 лежат на С[а,Ь]. 2.1. Пусть i7i и V2 лежат на С(а,Ь), т.е. ν\ Φ b и ν2 φ α (рис. 45). b Рис. 45 2.1.1. Пусть и2 лежит на C(cf,a). Тогда в графе G имеется подграф, гомеоморфный Х3,з (рис. 46). Рис. 46 2.1.2. Пусть и2 =d. Тогда во внешней части In имеется вершина w и три простые цепи от w соответственно до d, v\ и v2t которые в качестве общей точки имеют только точку w. В этом случае в графе G имеется подграф, гомеоморфный Х3,з (рис. 47). 2.1.3. Пусть и2 лежит на Q(b,d).
§5 3. Критерий планарности графа 147 Тогда в графе G есть подграф, гомеоморфный К3,з (рис. 48). Итак, мы рассмотрели случай 2.1. Поэтому мы можем считать, что хотя бы одна из вершин νχ и v2 не лежит на С(а,Ь). Без ограничения общности будем считать, что это вершина νχ, т.е. νχ = Ь (поскольку νχ лежит на С[а,Ъ\). 2.2. Пусть V2 φ а. 2.2.1. Пусть U2 лежит на C(d,a). Тогда в графе G есть подграф, гомеоморфный Х3,з (см. рис. 49). 2.2.2. Пусть и2 = d. Тогда в графе G имеется подграф, гомеоморфный Х3,з (см. рис. 50). 2.2.3. Пусть U2 лежит на C(b,d).
148 Глава 5. Планарность ы*в
§ 5.3. Критерий планарности графа 149 Тогда в графе G имеется подграф, гомеоморфный #з,з (рис. 51). Итак, мы рассмотрели случай 2.2. Поэтому осталось, наконец, рассмотреть последний случай. 2.3. Пусть ν2 = α (рис. 52). Ь — 1>! Рис. 52 Рассмотрим теперь пару вершин ui и U2· Будем считать, что и\ = с и U2 = dt поскольку все другие случаи расположения вершин щ и U2 рассматриваются совершенно аналогично тому, как были рассмотрены все случаи расположения вершин v\ и 172. Пусть Pi и Р2 — соответственно кратчайшие простые (а, Ь)-цепь и (с,й)-цепь во внутренней части In (см. рис. 53). Очевидно, цепи Pi и Р2 имеют общую точку. 2.3.1. Пусть цепи Pi и Р2 имеют более одной общей точки. Тогда в графе G есть подграф, гомеоморфный Х3,з (см. рис. 54). 2.3.2. Пусть цепи Рх и Р2 имеют только одну общую точку w. Тогда в графе G есть подграф, гомеоморфный Къ (см. рис, 55). Мы завершили рассмотрение последнего случая 2.3. Таким образом, доказано, что в графе G имеется подграф, гомеоморфный #з,з или Κ$> что противоречит нашему первому предположению. Итак, теорема доказана. D
150 Глава 5. Планарность и2 = d Рис. 55
§ 5.3. Критерий планарности графа 151 Определим процедуру стягивания ребра в графе. Пусть е = = uv — ребро графа G, не являющееся петлей. Последовательно выполним следующие действия: отождествим вершины и и ν, отбросим все петли, из каждой совокупности кратных ребер отбросим все ребра, кроме одного, т.е. сведем кратность ребер к единице. Получим обыкновенный граф, который обозначим через С Будем говорить, что граф G* получен из графа G стягиванием ребра е. На рис. 56 показан пример применения процедуры стягивания ребра. и е ν Рис. 56 Говорят, что граф G стягиваем к графу С, если G* = G или G' можно получить из G с помощью конечного числа применений процедуры стягивания ребер. Пример. Граф Петерсена стягиваем к Кь (рис. 57). Рис. 57 Заметим, что граф Петерсена не содержит подграфов, го- меоморфных Къу но содержит подграф, гомеоморфный Х3,з- В заключение этого раздела приведем без доказательства несколько интересных утверждений о планарных графах.
152 Глава 5. Планарность Следующую теорему можно вывести из теоремы Понтряги- на-Куратовского. Теорема 5.5 (Вагнер, Харари и Татт). Граф планарен тогда и только тогда, когда он не содержит подграфов, стягиваемых к K$,z, и не содержит подграфов, стягиваемых к К$. Теорема 5.6 (Вагнер). Обыкновенный планарный граф обладает укладкой на плоскости, в которой для изображения ребер используются лишь отрезки прямых линий. Теорема 5.7 (Бейкер). Следующие условия эквивалентны для любой конечной решетки L: 1) решетка L планарна, т. е. планарна ее диаграмма Хассе; 2) в решетке L ее порядок является пересечением двух линейных порядков, определенных на множестве L; 3) решетка L изоморфно вложима в прямое произведение двух конечных цепей. В связи с последней теоремой отметим, что Келли и Ривал нашли описание планарных конечных решеток на языке запрещенных подрешеток. Ими было построено счетное (бесконечное) семейство всевозможных минимальных непланарных конечных решеток. § 5.4. ДВОЙСТВЕННЫЕ ГРАФЫ Граф Gi называется двойственным к графу G2, если мат- роид циклов M{G\) графа G\ изоморфен матроиду разрезов M*(G2) графа G2· Поскольку изоморфизм матроидов является изоморфизмом и двойственных к ним матроидов, отношение «быть двойственными» для графов симметрично. Заметим, что для двойственных графов G\ и Gi очевидно выполняется r(G\) = г*(Сг) и r*(Gi) = r(G2). Лемма 1. Пусть G\ ы G2 — ненулевые графы и φ — биек- ция из EG\ на EG2. Если φ (точнее, отображение, индуцированное φ на V(EGi)) отображает векторы некоторого
§ 5.4. Двойственные графы 153 базиса пространства циклов графа G\ на векторы некоторого базиса пространства разрезов графа G2, то графы G\ и G2 — взаимно двойственные графы. Доказательство. Очевидно, любая биекция сохраняет операции U, Π, \ и, следовательно, сохраняет операцию симметрической разности 0. Поскольку базис переходит на базис, пространство циклов графа G\ переходит под действием φ на пространство разрезов графа G2. Так как отношение С также сохраняется биекцией в обе стороны, минимальные ненулевые элементы пространства циклов графа Gb т.е. циклы графа Gb переходят под действием φ на минимальные непустые элементы пространства разрезов графа G2, т.е. на разрезы графа G2. Конечно, верно и обратное утверждение, т. е. φ — изоморфизм матроида M(d) на матроид M*(G2). □ Пример. Рис. 58 Рассмотрим базис пространства циклов графа Gi, который состоит из векторов, отвечающих его внутренним граням: Ci = {ei,e2,e3}, С2 = {ез,е4,е5,еб}, С3 = {е6,е7,е8}. Определим биекцию φ из EG\ на EG2, полагая ф(вг) = е\ для г = 1,..., 8. Очевидно, r*(Gi) = m — η + Λ; = 8-6 + 1 = = 3 и r(G2) = η- k = 4 — 1 = 3. Далее заметим, что ф{С\)у
154 Глава 5. Планарность ф(С2) и ф(Сз) — линейно независимая система разрезов графа G2 и, следовательно, она является базисом пространства разрезов графа G2, так как r(G2) = 3. Таким образом, φ переводит базис С1,С2,Сз пространства циклов графа G\ на базис ф(С1),ф(С2),ф{Сз) пространства разрезов графа G2t т.е. G\ и G2 — взаимно двойственные графы по лемме 1. Пусть G — произвольный граф и е = аЬ — некоторое его ребро. Будем говорить, что граф G' получен из графа G замыканием ребра е, если G' получен из G с помощью следующих действий: отбрасывания ребра е и отождествления вершин α и 6, т.е. замены их на одну новую вершину (заметим, что при этом сохраняются все ребра, отличные от е, только концы ребер, равные α или 6, заменяются на новую вершину). Рис. 59 Лемма 2. Пусть G\ и G2 — взаимно двойственные графы, φ — изоморфизм матроида циклов M(G\) на матроид разрезов M*(G2), e G EG\, Сх = G\ — е и G2 — граф, полученный из G2 замыканием ребра ф(е). Тогда G[ и G2 — взаимно двойственные графы. Доказательство. Покажем, что ограничение изоморфизма φ на множество EG' является изоморфизмом матроида циклов M(Gfi) на матроид разрезов M*(G2). Пусть С — цикл графа G\. Он является циклом и в графе Gi, не содержащим ребра е. Тогда его образ ф(С) является разрезом в графе G2t не содержащим ф(е). Нетрудно понять, что ф(С) будет разрезом и в графе G2. Обратно, пусть ф(А) — разрез в графе G2 для некоторого А С EG'V Поскольку е # А, этот разрез является разрезом и в
§ 5.4. Двойственные графы 155 графе G2. Тогда его прообраз А является циклом в графе G\t не содержащим е. Следовательно, А — цикл графа G[. Π Пример. Рассмотрим графы G\ и G2 из предыдущего примера. Удалим ребра е3 и ее из графа G\ и замкнем ребра e'z и е'6 в графе G2. Получим следующие графы Рис. 60 Графы G[ и G2 взаимно двойственны, поскольку φ отображает единственный цикл графа G[ на единственный разрез графа G'2. Следствие 1. Если ненулевой граф имеет двойственный граф, то любой его ненулевой подграф также имеет двойственный граф. Доказательство. Достаточно отметить, что любой ненулевой подграф Η графа G можно получить из G, удаляя все ребра, не принадлежащие Я, и удаляя лишние изолированные вершины. D Следствие 2. Если граф имеет двойственный граф, то любой гомеоморфный ему граф также имеет двойственный граф. Доказательство. Пусть G\ и G2 — взаимно двойственные графы и φ — изоморфизм матроида циклов M(G\) на матроид разрезов M*(G2). Предположим сначала, что граф G\ получен из графа G\ исключением вершины ν степени 2 и е\ = av, e2 = vb —
156 Глава 5. Планарность два различных ребра, инцидентных вершине ν в графе G\. Будем считать, что при исключении вершины ν ребра е\ и е2 графа G\ заменяются на ребро е2 = аЪ графа G'v Очевидно, граф G\ можно получить из графа G\ и другим способом — замыкая ребро е\. Поэтому в силу леммы 2 граф G'x имеет двойственный граф. Предположим теперь, что граф G[ получен из графа G\ включением вершины ν степени 2. Пусть при этом некоторое ребро е = аЬ графа G\ заменяется на два новых ребра е\ = να и е2 = vb графа G[. Через G'2 обозначим граф, полученный из графа G2 заменой ребра е' = гш, где е' = ф{е), на два новых кратных ребра е[ = uw и ef2 — uw. Очевидно, все циклы графа G[ получаются из циклов графа G\ заменой каждого вхождения в цикл ребра е на два ребра е\ и е2. Аналогично, все разрезы графа Gf2 получаются из разрезов графа G2 заменой каждого вхождения в разрез ребра е' на два ребра е[ и е2. Отсюда легко вывести, что G[ и G2 — взаимно двойственные графы. D Пусть G — произвольный ненулевой граф и υ е V = VG. Вектором инцидентности, отвечающим вершине vt будем называть сечение (υ, V \υ) графа G и будем обозначать его через Sec{v). Лемма 3. Пусть VG = V\ О V2, где V\ = {vi,...,vt} и V2 = {vt+i,... jVn} для некоторого t G N, где η — число вершин в ненулевом графе G. Тогда (VUV2) = Sec(vi) Θ · · · Θ Sec(yt) = = Sec(vt+i) Θ · · · Θ Sec{vn). Доказательство. Каждое ребро графа G, принадлежащее сечению (Vi,Vb), встретится точно в одном из множеств Sec(vi) для г = 1,... ,£. Каждое же ребро графа G, не принадлежащее рассматриваемому сечению, либо вообще не встретится в множествах Sec(vi) для г = 1,...,£, либо встретится точно в двух из них, отвечающих концам ребра. Из сказанного следует первое из доказываемых равенств. Второе равенство доказывается аналогично. D
§ 5.4. Двойственные графы 157 Следствие 3. Пусть G — ненулевой η-граф. Тогда любые 71 — 1 векторов инцидентности, отвечающих его вершинам, являются системой образующих пространства разрезов графа G. Доказательство. Как было доказано ранее, векторами пространства разрезов ненулевого графа являются сечения графа и только они. Осталось отметить, что отсутствующий вектор инцидентности не входит точно в одно из указанных в лемме 3 разложений* D Лемма 4. Любой ненулевой планарный граф имеет двойственный граф. Доказательство. Пусть G — плоский ненулевой граф и <?ь· ··><?/ — все его грани. Рассмотрим некоторое множество, состоящее из / вершин {νχ,...,ν/}. Определим на нем граф С Для каждого ребра е графа G, лежащего на границе граней Qi и gjt зададим ребро е' — ущ графа G' (конечно, случай г = j отвечает ситуации, когда ребро е лежит внутри грани git и тогда е' = ν*ν» является петлей). Рис. 61 Докажем, что G и G' — взаимно двойственные графы. Пусть ΛΊ,...,Λ/_ι — базис пространства циклов графа G, состоящий из векторов пространства циклов, отвечающих границам внутренних граней графа G. Рассмотрим биекцию φ из EG на EG', которая фактически была определена при задании ребер графа G' и для которой выполняется ф(е) = е' для любого е е EG. Очевидно, для любого г = 1,...,/- 1 множество ф(Хг) является вектором инцидентности графа С, отвечающим его вершине Vi. Система векторов ф{Х\),..., ф(Х/-г)
158 Глава 5. Планарность пространства разрезов графа G' линейно независима, так как биекция переводит линейно независимую систему векторов в линейно независимую систему векторов (поскольку биекция сохраняет симметрическую разность). Теперь в силу следствия 3 система ф(Х\),... ,0(X/_i) является базисом пространства разрезов графа G'. Отсюда на основании леммы 1 заключаем, что G и G' — взаимно двойственные графы. D Лемма 5. Граф #з,з не имеет двойственного графа. Доказательство. Очевидно, в графе #з,з выполняются следующие свойства: 1) граф не имеет разрезов, состоящих из одного или из двух ребер; 2) любой цикл имеет длину 4 или 6; 3) число ребер т = 9. Пусть, от противного, граф Х3,з имеет двойственный граф G. Будем считать, что в графе G нет изолированных вершин (отбрасывание изолированных вершин в графах, очевидно, не нарушает двойственности). В силу упомянутых свойств графа #з,з в графе G выполняются следующие свойства: V) нет петель и нет циклов длины 2, т.е. G — обыкновенный граф; 2') нет ненулевых сечений (и, в частности, векторов ин- циденции), содержащих меньше 4 ребер, т.е. cleg υ ^ 4 для любой вершины ν графа G; 3') число ребер га = 9. Из Г) и 2') следует, что η ^ 5, где η — число вершин графа G. В силу леммы о рукопожатиях получаем 18 = 2т = = J2V cleg г; ^ η · 4 ^ 5 · 4 = 20, что противоречиво. D Лемма 6. Граф К$ не имеет двойственного графа. Доказательство. Очевидно, в графе К$ выполняются следующие свойства: 1) нет циклов длины 1 или 2; 2) любой разрез состоит из 4 или 6 ребер; 3) число ребер га = 10.
§ 5.4. Двойственные графы 159 Пусть, от противного, граф К$ имеет двойственный граф G. Будем считать, что в графе G нет изолированных вершин. В силу 2) в графе G нет циклов длины 1 или 2, т. е. G — обыкновенный граф. Из 2) вытекает также, что все циклы графа G имеют четные длины 4 или 6. Тогда G является двудольным графом в силу теоремы Кенига из § 1.2. Если для числа η вершин графа G выполняется неравенство η ^ 6, то, как нетрудно убедиться, перебирая полные двудольные графы с числом вершин меньше или равным 6, для числа т ребер графа G получаем т ^ 9, что противоречит 3). Таким образом, η ^ 7. Поскольку G — обыкновенный граф, из 1) получаем cleg υ ^ 3 для любой вершины υ графа G. Применяя лемму о рукопожатиях, получаем 20 = 2т = = X^degv ^ η · 3 > 7 · 3 = 21, что противоречиво. D ν Теорема 5.8 (Уитни). Ненулевой граф имеет двойственный граф тогда и только тогда, когда он планарен. Доказательство. Пусть граф G имеет двойственный граф. Предположим, от противного, что граф G непланарный. Тогда в силу теоремы Понтрягина-Куратовского в графе G имеется подграф, гомеоморфный К$ или Кз,з- Отсюда на основании следствий 1 и 2 из леммы 2 получаем, что граф К*> или граф Хз,з имеет двойственный граф, что противоречит лемме 5 или лемме 6. Обратное утверждение верно по лемме 4. D
Глава 6 РАСКРАСКИ § t.i. ХРОМАТИЧЕСКИЕ ЧИСЛА Пусть G = (V,£) — произвольный граф и {ci,...,ct} — некоторое множество, элементы которого будем называть красками. Раскраской или, точнее, t-раскраской графа G называется отображение φ из V в {ci,...,ct} такое, что для любых двух различных смежных вершин и и ν графа G выполняется ф(и) φ φ{ν). Отметим, что здесь не предполагается, что φ отображает V на все множество красок {ci,... ,ct}. Будем говорить, что цвет φ(ν) приписан вершине υ е V или вершина ν имеет цвет φ(ν). Мы видим, что ί-раскраска графа G приписывает каждой его вершине один из t заданных цветов таким образом, что любые две различные смежные вершины имеют разный цвет. Заметим, что, рассматривая раскраски, можно без ограничения общности считать граф G обыкновенным. Граф называется Ь-раскрашиваемым, если он обладает ί-раскраской. Граф называется t-хроматическим, если он ί-раскрашиваемый, но не является (t — 1)-раскрашиваемым; число t в таком случае называют хроматическим числом графа G и обозначают через x(G). Заметим, что: 1) 1-хроматические графы — это нулевые графы и только они; 2) 2-хроматические графы — это ненулевые двудольные графы и только они;
§ 6.1. Хроматические числа 161 3) χ(Κη) = η и x(G) ^ η, если граф G содержит в качестве подграфа граф Кп для натурального числа п. Теорема 6.1 (Кёниг). Ненулевой обыкновенный граф G является 2-хроматическим тогда и только тогда, когда он не содержит циклов нечетной длины. Это утверждение эквивалентно теореме Кёнига из раздела 1.2. Следствие 1. Любое неодноэлементное дерево является 2-хроматическим графом. Через Δ((?) будем в дальнейшем обозначать наибольшую из степеней вершин графа G. Лемма 1. Пусть Δ = A(G). Тогда граф G граф является (Δ + 1)-раскрашиваемым. Доказательство. Проведем индукцию по числу вершин графа G. Пусть G — неодноэлементный граф и ν — некоторая его вершина. Тогда по предположению индукции граф G — ν является (Δ -f 1)-раскрашиваемым. Очевидно, (Δ -f 1)- раскраску графа G — υ можно дополнить до (А-Ы)-раскраски графа G, приписав вершине υ любой цвет, не использованный для раскраски смежных с ней вершин. D Лемма 2. Если для некоторого t € N каждый блок связного графа t-раскрашиваем, то и сам граф t-раскрашиваем. Доказательство. Проведем индукцию по числу блоков графа. Можно считать, что граф G имеет более одного блока. Пусть В — один из висячих блоков графа и G\ — подграф графа G, равный объединению остальных блоков. Через ν обозначим единственную общую вершину графов В и G\. По предположению индукции граф G\ является ί-раскрашиваемым. Очевидно, имеются две такие ί-раскраски графов В и G\, что вершине ν приписывается ими одинаковый цвет. Теперь ясно, что эти две раскраски дают искомую раскраску графа G. D
162 Глава 6. Раскраски Лемма 3. Пусть G — обыкновенный граф, который является блоком и не является полным графом. Если Δ = = Δ((?) ^ 3, то граф (G) является /^-раскрашиваемым. Доказательство. 1) Покажем сначала, что в графе G существует такая простая незамкнутая цепь и —> w —у ν, что вершины и и υ несмежны и граф (G — и) — ν = G — и — ν связен. Обозначим через L множество всех доминирующих вершин графа (?, т.е. вершин, смежных с каждой его вершиной. Предположим, что L φ 0. Очевидно, вершинно-порож- денный подграф G(L) является полным подграфом. Так как G не является полным графом, в VG\L имеются две различные несмежные вершины и и v. Поскольку L φ 0, граф G — u — v связен. Осталось в качестве w взять любую вершину из L. Пусть теперь L = 0. В силу условия теоремы в графе G существует вершина α такая, что cleg α ^ 3. Ясно, что граф G — а связен, поскольку граф G является блоком. Рассмотрим случай, когда граф G — а — блок. Так как L = 0, в графе G — а найдется вершина Ь, несмежная с а. Возьмем кратчайшую (а, Ь)-цепь в графе G: а —> w —> ν —> ... • · · -> b (возможно, эта цепь заканчивается вершиной ν и тогда υ = b). Очевидно, вершина ν несмежна с вершиной α и граф G — α — ν связен. Осталось в этом случае положить и = а. Рассмотрим теперь случай, когда связный граф G—а не является блоком. Тогда граф G—a есть неодноэлементное дерево блоков. Возьмем два его различных блока Βχ и Β<ι, являющихся висячими вершинами в дереве блоков и точек сочленения графа G — a, т. е. висячими блоками. В блоке В\ существует вершина и, не являющаяся точкой сочленения графа G — а и смежная с α (иначе точка сочленения графа G — a, лежащая в блоке Βχ, была бы точкой сочленения графа G, что невозможно). Аналогично, в блоке Въ существует вершина ν, не являющаяся точкой сочленения графа G — а и смежная с а. Легко видеть, что граф G — u — v связен. Действительно, удаление из графа G — a вершин и и ν не нарушает связности висячих блоков В\ и £?2э поэтому граф G-a — u — v связен. Так как cleg α ^ 3, отсюда следует связность графа G — u — v.
§ 6.1. Хроматические числа 163 Для завершения доказательства утверждения 1) осталось положить w = а. 2) Построим теперь Δ-раскраску графа G. Возьмем вершины u,w,v, указанные в 1). Поскольку граф G — u — v связен, его вершины можно занумеровать таким образом а\, й2,. ·., αη_2 = w, что каждая из вершин а\,..., ап_з будет смежна по крайней мере одной вершине с большим номером. Пусть 1\ — остовное дерево графа G\ = G-и-v. В качестве αϊ берем любую висячую вершину дерева Т\% отличную от w. Ясно, что граф G2 = G\—a\ — связный граф с остовным деревом ТЬ = ΤΊ — αϊ, содержащим w. Отметим, что вершина αϊ соединена висячим ребром с одной из вершин графа G<i. Далее в качестве α<ι выбираем висячую вершину в Т^, отличную от w, и т. д. Очевидно, дерево Тп_2 одноэлементно и состоит из одной вершины w. Вершине w присваиваем номер η — 2, т. е. αη_2 = w. Окрасим вершины и и ν в первый цвет с\. Затем последовательно будем приписывать вершинам αϊ, α2,..., αη_2 = w один из цветов ci, С2,..., сд по следующему правилу. Пусть п-2>5^1и вершины и, ν, αϊ,..., as уже окрашены (здесь при s = 1 имеются точно две окрашенные вершины — и и г;). Так как а3 смежна хотя бы с одной вершиной, имеющей больший номер, степень вершины а3 в вершинно- порожденном подграфе G({u,v,ai,.. . ,as}) меньше Δ. Вершину as окрасим в тот из цветов С1,...,сд, который еще не был использован для окраски вершин, смежных с а3. Аналогично поступим и с вершиной an_2 = w. Поскольку elegit; < Δ и вершины и и υ, смежные с w, окрашены в один и тот же цвег с\ч при раскраске вершин, смежных с w, были использованы не все имеющиеся краски. Окрасим вершину w в еще неиспользованный цвет и получим Δ-раскраску графа G. D Теорема 6.2 (Брукс, 1941). Пусть G — связный обыкновенный граф, не являющийся полным графом, и Δ(Ο) ^ 3. Тогда граф G является /^-раскрашиваемым.
164 Глава 6. Раскраски Доказательство. Если G — блок, то утверждение верно в силу леммы 3. Пусть G не является блоком. В силу леммы 2 достаточно установить, что произвольный блок Я графа G является Δ-раскрашиваемым. Ясно, что Δ(#) < Δ((?) = Δ. Если Δ(#) < Δ, то блок Я является Δ-раскрашиваемым по лемме 1. Пусть Δ(#) = Δ. Если Я — полный граф, то все степени AegHv его вершин ν равны Δ, поэтому для точки сочленения и графа G, лежащей в Я, выполняется degGw ^ ^ Δ + 1, что противоречит определению числа Δ. Таким образом, Я не является полным графом. Тогда в силу леммы 3 блок Я является Δ-раскрашиваемым. D Заметим, что теорема Брукса дает оценку сверху для хроматического числа графа. Однако эта оценка может быть сколь угодно далека от хроматического числа. Действительно, любое нетривиальное дерево является 2-хроматическим графом и можно построить дерево, имеющее сколь угодно большие степени вершин. Лемма 4. Пусть вершины графа G раскрашены красками ci,...,q. Обозначим через G^ подграф графа G, порожденный всеми вершинами цвета Ci и всеми вершинами цвета Cj, где i^jul^i^j^t. Пусть G\j — некоторая компонента связности графа Gij. Поменяем местами краски ci и Cj в раскраске вершин из подграфа G\j и оставим без изменения цвета остальных вершин графа G. Тогда получится новая раскраска графа G красками ci,...,с*. Доказательство. Пусть вершины и и υ графа G имеют одинаковый цвет с при новом распределении красок. Если с ^ ^ Ci,Cjy то вершины и и ν, очевидно, несмежны. Поэтому без ограничения общности будем считать, что с = q. Рассмотрим четыре случая. 1. Пусть и,ν € УС{у Тогда вершины и и ν имеют одинаковый цвет в исходной раскраске и поэтому несмежны. 2. Пусть и € VG'tj, a v g VG'^. Тогда вершины и и ν несмежны, так как они лежат в разных компонентах связности графа G^.
§ 6.1. Хроматические числа 165 3. Пусть и & VG'ij, г ν € VG^. Этот случай аналогичен предыдущему случаю. 4. Пусть и,ν & VG[j. Тогда вершины и и ν имеют одинаковый цвет Ci в исходной раскраске графа G и поэтому они несмежны. D Теорема 6.3 (Хивуд, 1890). Любой планарный граф 5-раскрашиваем. Доказательство. Пусть G — планарный η-граф. Проведем индукцию по числу вершин графа. Если η ^ 5, то утверждение очевидно. Будем теперь считать, что G — плоский обыкновенный граф, п^би утверждение верно для любого плоского графа, содержащего меньше чем η вершин. Согласно следствию 5 из § 4.2 граф G имеет вершину г;, степень которой меньше или равна 5. Используя предположение индукции, раскрасим граф G — ν в пять цветов. Если cleg г; < 5, то вершину ν можно раскрасить в любой цвет, не использованный при раскраске вершин, смежных с v. Пусть теперь cleg г; = 5. Будем считать, что вершины v\,V2, ^3,^4,^5, смежные с г;, занумерованы таким образом, что инцидентные им ребра выходят соответственно из вершины ν последовательно друг за другом по направлению часовой стрелки (см. рис. 62). Если какие-либо две вершины, смежные с г;, имеют одинаковый цвет, то вершину ν можно раскрасить в цвет, не использованный при раскраске смежных с ней вершин. Поэтому без ограничения общности будем считать, что для любого г = 1,2,3,4,5 вершина V{ окрашена в цвет с*. В соответствии с леммой 4 рассмотрим подграф G\s в графе G. 1. Пусть вершины v\ и vs не лежат в одной компоненте связности графа G13. Тогда v\ Ε VG[3 и v3 € VG"3, где G'13 и G"3 — две различные компоненты связности графа Gi3. Пользуясь леммой 4, поменяем местами цвета с\ и с3 в раскраске вершин подграфа G'13. В новой раскраске графа G — v вершины v\ и vs будут иметь одинаковый цвет с3. Освободившийся цвет с\ припишем вершине ν и получим 5-раскраску графа G. 2. Пусть вершины ν\ и v3 лежат в одной компоненте связности G'13 графа G13. Тогда в графе G'13 имеется простая
166 Глава 6. Раскраски (^1,г>з)-цепь v\ ->...-> vs и поэтому в графе G имеется цикл С: ν -> v\ -> · · · -> υ3 -> v. Внутри области, ограниченной циклом С, лежит либо вершина v2, либо вершина V4. Без ограничения общности будем считать, что это вершина v2 (рис. 62). Тогда нетрудно видеть, что вершины v2 и v\ лежат в разных компонентах связности графа (?24, т-е- мы пришли к случаю, аналогичному случаю 1), где вершина v2 играет роль вершины vi, а вершина V4 — роль вершины vs. □ Естественно возникает вопрос: можно ли усилить доказанную теорему, заменив число 5 на число 4? Ответить на этот вопрос в течение приблизительно 100 лет пытались многие известные математики. Гипотезу о том, что любой планарный граф можно раскрасить четырьмя красками, сформулировал в 1879 году английский математик Кели, а доказательство этой гипотезы было получено в 1976 году Хейкеном и Аппелем. Таким образом, справедлива следующая теорема. Рис. 62 Теорема 6.4 (Хейкен и Аппель). Любой планарный граф 4-раскрашиваем. Отметим, что доказательство этой теоремы весьма сложно, причем часть доказательства трудно воспроизводима, так как была проведена авторами с помощью компьютера. Конечно, такое доказательство не удовлетворяет многих математиков.
§ 6.2. Хроматические многочлены 167 § 6.2. ХРОМАТИЧЕСКИЕ МНОГОЧЛЕНЫ Пусть G — обыкновенный граф. Через P(G,x) обозначим хроматическую функцию, которая для любого неотрицательного целого числа χ принимает значение, равное числу х-раскрасок графа G (при заданном множестве из χ красок). Пример. 1) Р(Оп,х) = хп, так как каждую из η вершин нулевого графа Оп можно независимо окрасить в любой из χ заданных цветов. 2) Р(Кп, х) = х(х — 1)... (х — η -f 1), так как первую вершину полного графа Кп можно окрасить в любой из χ цветов, вторую — в любой из оставшихся χ — 1 цветов и т. д. В дальнейшем многочлен х(х—1)... (х—η 4-1) для удобства будем обозначать через х^ и называть факториалъной степенью переменной х. В этих обозначениях имеем Р(Кп,х) = = *<">. Пусть и и ν — две различные несмежные вершины обыкновенного графа G. Через G\ обозначим граф, полученный из G добавлением нового ребра е = uv, а через G<i — граф, полученный из G отождествлением вершин и, ν и отождествлением возникающих при этом кратных ребер. Лемма 1. P{G,x) = P(Gux) + P(G2,x). Доказательство. Число я-раскрасок графа G равно сумме числа х-раскрасок графа G, у которых вершины и и ν имеют разный цвет, и числа я-раскрасок графа G, у которых вершины и и ν имеют одинаковый цвет. Число раскрасок первого типа равно числу я-раскрасок графа Gb а число раскрасок второго типа — числу я-раскрасок графа G<i. D Пример. Вычисляя функцию P(G,x) с помощью леммы 1, мы будем опускать символы Ρ, χ и изображать только возникающие при вычислениях графы:
168 Глава 6. Раскраски $*·|$*Δ]+Δ- $-·Δ- + 4« = х(5) + 4х(4) + Зх(3) = х5 - 6х4 + 14х3 - 15х2 + 6х. Мы видим, что с помощью леммы 1 для любого обыкновенного η-графа G функцию P(G,x) можно представить в виде суммы хроматических функций полных графов, т. е. в виде многочлена с целыми неотрицательными коэффициентами от факториальных степеней переменной х: P(G,х) = Р(Кп,х) + aiP(Kn-Ux) + α2Ρ(Χη_2,χ) + · · · = = хм + αιχίη-ι) + α2χ(η-2> +.... Очевидно, этот многочлен имеет степень η и его старший коэффициент равен 1. Процесс нахождения с помощью леммы 1 соответствующего семейства полных графов будем называть хроматической редукцией для графа G. Из полученного разложения для P(G,x) видно, что хроматическая функция обыкновенного графа является многочленом. Ее называют хроматическим многочленом графа G. Лемму 1 полезно переформулировать еще и в следующем удобном для применений виде. Лемма 2. P(Gux) = P{G,x) - P(G2,x).
§ 6.2. Хроматические многочлены 169 Пример. -V -ΛΛΛΙ- -.\-LYIM- -4 +6 -3 · = • · · χ4-4χ3+6χ2-3*. Мы видим, что с помощью леммы 2 можно вычислить хроматический многочлен обыкновенного графа сразу по степеням переменной х. Следующая теорема совершенно очевидна. Теорема 6.5. Пусть G\,...,Gk — множество всех компонент связности графа G. Тогда P(G,x) = P(Gux) P(Gh,x). Теорема 6.6. Пусть обыкновенный граф G равен объединению двух своих подграфов G\ и Gi, т.е. G — Gi UGi, причем Η = Gi Π G2 является полным t-графом для некоторого натурального числа t. Тогда P(G,x) = -^P(Gl,x)P(G2,x).
170 Глава 6. Раскраски Доказательство. Так как Η — полный граф, при любой его раскраске все вершины будут иметь разный цвет. В силу симметрии любые две различные х-раскраски графа Η могут быть одинаковым числом способов продолжены до х-раскрасок графа G\. Следовательно, число Р(Н,х) делит число P(Gux) и частное P(Gux) Р(Н,х) равно числу продолжений произвольной х-раскраски графа Η до х-раскрасок графа G\. Аналогично, частное P(G2,aO Р(Н,х) равно числу продолжений произвольной х-раскраски графа Я до х-раскрасок графа G2- Теперь с учетом равенства Р(Н, х) = х^ получаем P(G,x) = xl 1 (t) P{Gux) P(G2,x) x(t) x(t) P(Gux).P(G2,x). D Пример. r(2) Δ- --ЛГ (** -4jc8 +6jc2 -Zx) x[ jc(2) = ж5 - 6л:4 + 14x3 - 15*2 + 6*. Следствие 1. Пусть Bi,...,Bs — множество всех блоков неодноэлементного связного обыкновенного графа G. Тогда P(G,x) = -L· · P(Bi,ar) P(Bs,x).
§ 6.2. Хроматические многочлены 171 Доказательство. Применяем теорему при t = .1 последовательно для s — 1 точек сочленения в качестве Я, отщепляя по очереди висячие блоки. D Следствие 2. Хроматический многочлен любого неодноэлементного дерева Т, имеющего η вершин, равен х(х — 1)п-1. Доказательство. Дерево Τ имеет η - 1 двухэлементных блоков, поэтому = ϊέϊ·χη"1(χ-ΐ)η"1=^-ΐ)η"1. D Пусть η ^ 3. Обыкновенный граф будем называть бесхорд- ным п-циклом, если все его ребра образуют один цикл длины пив нем нет изолированных вершин. Следствие 3. Хроматический многочлен бесхордного η-цикла равен (х — 1)п -f (—1)п(х — 1). Доказательство. Обозначим через Рп{х) хроматический многочлен бесхордного η-цикла. В силу леммы 2 имеем Α-Λ-Λ Рис. 63 Следовательно, Рп(х) = х(х - 1)п-1 — Рп-\{х), откуда вытекает Рп(х) - (х - 1)п = (х - 1Г"1 - P»-i(x). Домножая на (—1)п, получаем (-1)п(Р„(х) - (х - 1)») = (-ΐΓ-^Ρη-ιί*) - (х - Ι)""1)·
172 Глава 6. Раскраски Вычисляя эту величину при η = 3, получаем (-1)3(Рз(:г) - (х - I)3) = -(*(3) -(х- I)3) = = -(х(х - 1)(х -2)-(х- I)3) = χ - 1. Таким образом, (-1)п(Рп(х) - (х — 1)η) = χ - 1, откуда получаем Рп(х) = (х-1)п + (-1)п(х-1). Π Будем говорить, что обыкновенный граф G является произведением G\ 0 G2 двух своих вершинно-порожденных подграфов Gi и G2, если УС = VGX U VG2, Οχ Π G2 = 0 и для любых двух вершин и € VG\ и ν е VG2 граф G содержит точно одно ребро вида е = uv. Пример. Рис. 64 Пусть д(х) и h(x) — два многочлена с целыми коэффициентами. Через д(х) 0 h(x) обозначим многочлен, который получается следующим образом. Сначала представляем многочлены д(х) и h(x) в виде многочленов от факториальных степеней переменной х. Затем перемножаем полученные многочлены, действуя с факториальными степенями переменной х, как с обычными степенями. Например, (х™ + 2х&) 0 (χΡ) + χΜ) = χ<5> + 2s<4> + ζ(4> + 2χ(3) = = χΜ+3χΜ+2χ&.
§ 6.2. Хроматические многочлены 173 Теорема 6.7. Если G = G\<S> G2, то P(G,x) = P(Gux)®P(G2,x). Доказательство. Применяя хроматическую редукцию отдельно к πι-графу Gi и отдельно к п2-графу G2, мы получаем P(Gux) = P(Kni,x)+alP(Kni-Ux)+a2P(Kni-2) + ..., P(G2,x) = Р(КП2,х) + ЬхР(КП2-их) + Ь2Р(КП2.2) + · · · для некоторых целых чисел αι,ο2,...;&ι,&2» — Если мы применим хроматическую редукцию к графу G = = Gi0(?2. то подграфы G\ и G2 будут преобразованы как указано выше. На любом этапе хроматической редукции каждая вершина графа, полученного из Gi, будет соединена ребром с каждой вершиной графа, полученного из G2. Следовательно, в конце концов мы представим хроматический многочлен графа G как сумму хроматических многочленов попарных произведений полных графов из редукции графа G\ и полных графов из редукции графа G2. Произведение полного графа К3 на полный граф Kt является полным графом K3+t. В терминах же факториальных степеней имеем χ(*)®χ№ = x^s+t\ Отсюда теперь вытекает доказываемое утверждение. D Пример. □ -X-V- = X2 ® X2 = (*(2) + *(1)) ® (*(2) + *(1)) = = х(4) + 2х(3) + х(2) = х4 - 4х3 + б*2 - Зх. Из предыдущего ясно, что очень полезно уметь переходить от факториальных степеней переменной χ к ее обычным степеням и наоборот.
174 Глава 6. Раскраски В разложении η г=0 числа sfo^i), где η € N U {0} и 0 ^ г ζ η, называют числами Стирлинга первого рода. Отметим, что их можно получить, применяя лемму 2 к хроматическому многочлену полного графа Кп (только, к сожалению, эта процедура требует больших временных затрат). Используя соотношение χ(η) = χ(η-1)(χ _ (п _ -^ = χχ(η-1) _ (п _ 1)χ(η-1)^ нетрудно установить следующие свойства чисел Стирлинга первого рода: 1) s(n,i) = s(n— l,i — 1) — (η — l)s(n — 1,г) для 0 < г < η; 2) s(n,n) = 1 для η > 0; 3) s(n,0) = 0 для n>0. В разложении η xn = 5^S(n,i)*(<) числа 5(n, г), где η е N U {0} и 0 ^ г ^ η, называют числа- ми Стирлинга второго рода. Опять отметим, что их можно получить, применяя лемму 1 к хроматическому многочлену нулевого графа Оп (т.е. применяя хроматическую редукцию к графу Оп). Можно доказать (и это будет сделано в следующем разделе), что число Стирлинга второго рода S(n,i) равно числу разбиений η-элементного множества на г (непустых) классов. Числа Стирлинга второго рода обладают следующими свойствами: 1) S(n, г) = S(n - 1, г - 1) + iS(n - 1, г) для 0 < г < п; 2) 8(71, п) = 1 для η ^ 0; 3) S(n, 0) = 0 для η > 0. Свойства 2) и 3) очевидны, а для доказательства 1) достаточно заметить, что все разбиения множества {1,...,п} на г классов бывают двух типов:
§ 6.3. Коэффициенты хроматических многочленов 175 a) разбиения, которые имеют одноэлементный класс {п} (таких разбиений имеется S(n — 1, г — 1) штук); b) все остальные разбиения (число их равно iS(n - 1,г)), поскольку для их получения надо к произвольному разбиению множества {1,...,п- 1} на г классов поочередно в каждый класс добавлять элемент п). § 6.3. КОЭФФИЦИЕНТЫ ХРОМАТИЧЕСКИХ МНОГОЧЛЕНОВ Пусть G — произвольный обыкновенный (п, т)-граф. В предыдущем разделе было установлено, что хроматический многочлен P(G1x) имеет степень η и его старший коэффициент равен 1. В этом разделе мы продолжим изучение коэффициентов хроматического многочлена. Теорема 6.8. Коэффициенты хроматического многочлена составляют знакопеременную последовательность. Доказательство. Проведем индукцию по числу вершин графа. Утверждение очевидно для одноэлементного графа. Пусть оно верно для любого графа, содержащего η вершин. Рассмотрим графы, содержащие η + 1 вершин. Шаг индукции будем доказывать индукцией по числу ребер графа. Если (п + 1)-граф не имеет ребер, т.е. является нулевым, то его хроматический многочлен хп+1 удовлетворяет доказываемому свойству. Пусть утверждение теоремы верно для любого обыкновенного (п -f 1,т)-графа. Рассмотрим обыкновенный (n + l,m + 1)-граф G\ и некоторое его ребро е. Положим G = G\ — е, а через G^ обозначим граф, полученный из G отождествлением концов ребра е и образующихся при этом кратных ребер. Тогда по лемме 2 из предыдущего раздела выполняется P(Gux) = P(G,x)-P(G2,x). В силу предположений индукции верны равенства P(G, χ) = χη+1 - аххп + a2xn~l - α3χη~2 + ..., P{G2, x) = xn- bxxn-1 + b2xn~2 -...
176 Глава 6. Раскраски для некоторых неотрицательных целых чисел а\, а^..., Ьь&2, — Из этих двух равенств выводим P{Gux) = xn+l - (αχ + l)xn + (θ2 + 6ι)ζη_1 - .. ■, (*) откуда вытекает доказываемое утверждение. D Из доказательства видно, что добавление к графу одного нового ребра добавляет 1 к абсолютной величине второго коэффициента хроматического многочлена. Поэтому верно Следствие 1. Абсолютная величина второго коэффициента хроматического многочлена равна числу ребер обыкновенного графа. Заметим, что для связного обыкновенного η-графа G и любого неотрицательного целого числа χ выполняется неравенство P(G1x)^x{x-l)n-\ В самом деле, возьмем в качестве Τ некоторый остов графа G. Тогда любая раскраска графа G будет раскраской и графа Τ (конечно, обратное верно не всегда). Следовательно, P{G,x) ^ Р(Т,х) = х{х - Ι)""1. Теорема 6.9. Обыкновенный п-граф является деревом тогда и только тогда, когда P(G,x) = х(х — 1)п-1. Доказательство. Необходимость условия была установлена в предыдущем разделе. Предположим теперь, что P(G, χ) = = χ(χ-1)η~ι. Заметим, что свободный член любого хроматического многочлена равен 0, так как число О-раскрасок равно 0. Поэтому если граф G несвязен, то хроматический многочлен каждой его компоненты связности делится на χ и, следовательно, х2 делит P(G,x), что противоречит нашему предположению. Второй коэффициент многочлена P(G,x) по абсолютной величине равен числу ребер графа и равен в нашем случае η — 1. Таким образом, граф G является деревом, поскольку G — связный (η, η — 1)-граф. D
§ 6.3. Коэффициенты хроматических многочленов 177 Теорема 6.10. Для связного обыкновенного η-графа G абсолютная величина коэффициента при хг, где 1 ^ г < п, в хроматическом многочлене P(G, χ) больше или равна числа сочетаний (^Γχ1)· Доказательство. Возьмем в качестве Τ некоторый остов графа G. Тогда Р(Т,х) = х(х - 1)п~1 = χ Σ (П ~ * Vt-l)"-1-' = -έ(-'^(;:1>· г—I ч ' Равенство (*) показывает, что добавление нового ребра к графу не уменьшает абсолютных величин его коэффициентов. Поскольку граф G можно получить из дерева Τ добавлением новых ребер, осталось воспользоваться найденным видом многочлена Р{Т,х). D Из доказанной теоремы при г = 1 вытекает, что для связного обыкновенного графа G абсолютная величина коэффициента при χ в хроматическом многочлене P(G1x) больше или равна (ηό!) = 1. Поскольку свободный член хроматического многочлена равен 0, отсюда на основании теоремы 6.5 получаем Следствие 1. Наименьшее число г, для которого отличен от нуля коэффициент при хг в хроматическом многочлене P(G,x), равно числу компонент связности графа G. Иными словами, для любого обыкновенного (п,т,/^-графа G кратность множителя χ в хроматическом многочлене P(G,x) равна к. Перейдем теперь к выводу формул, полезных для исследования коэффициентов хроматического многочлена. Начнем с представления хроматического многочлена через факториаль- ные степени х. Пусть G — обыкновенный η-граф. Непустое подмножество U С VG называют независимым, если U порождает нулевой
178 Глава 6. Раскраски подграф, т.е. в графе G нет ребер, соединяющих вершины из U. Через pt(G,i) будем обозначать число разбиений множества вершин графа G на г независимых подмножеств. Теорема 6.11 (Зыков, 1952). Для хроматического многочлена любого обыкновенного графа G справедлива формула η />(<?,*) = Σ i*(G,i)*«. г=1 Доказательство. Подсчитаем число я-раскрасок графа G, в которых используется точно г красок, где 1 ^ г ^ х. Чтобы получить такую раскраску сначала одним из pt(G,i) способов выбираем разбиение множества вершин графа G на г независимых множеств, затем берем один из классов и раскрашиваем его вершины в одинаковый цвет одним из χ способов, потом берем следующий класс и окрашиваем его вершины в одинаковый цвет любой из χ — 1 оставшихся красок и т. д. Следовательно, число интересующих нас раскрасок графа G равно pt(G, г)'Х-{х-1) {х - г + 1) = pt{G, г) · x{i). Заметим, при г > χ число я-раскрасок, в которых используется точно г красок, равно 0 и при этом х^ также равно 0. D Отметим, что для нулевого графа полученное в теореме равенство представляет собой формулу разложения обычной степени хп через факториальные степени с числами Стирлин- га второго рода в качестве коэффициентов. Заметим также, что в полученном равенстве наименьшее число г, для которого отличен от нуля коэффициент при х^г\ равен хроматическому числу графа G. Изучим теперь коэффициенты хроматического многочлена в его разложении через обычные степени х. Теорема 6.12 (Уитни, 1932). Пусть G — обыкновенный {п,т)-граф. Тогда коэффициент при хг, где 1 ^ г ^ п,
§ 6.3. Коэффициенты хроматических многочленов 179 в хроматическом многочлене P(G1x) равен т £(-i)'iV(U), где N(i,j) — число остовных подграфов графа G, имеющих г компонент связности и j ребер, т. е. η т Доказательство. Применим для подсчета коэффициентов один из широко применяемых принципов комбинаторного анализа — принцип включения-исключения. Зафиксируем некоторый набор /С из χ красок, где χ — некоторое натуральное число. Отображение φ из VG в /С, не являющееся раскраской графа G, будем называть его несобственной раскраской (для несобственной раскраски обязательно существует ребро графа, концы которого раскрашены в одинаковый цвет). Конечно, число собственных и несобственных я-раскрасок η-графа G равно хп. Возьмем некоторую собственную или несобственную раскраску графа G. Удалим из графа каждое ребро, концы которого раскрашены в разный цвет. Получим остовный подграф Я, каждое ребро которого (если таковое имеется) соединяет вершины одинакового цвета. Исходную собственную или несобственную раскраску будем называть строго несобственной раскраской остовного подграфа Н. Каждой компоненте связности графа Η соответствует точно один цвет (это цвет ее вершин), поэтому если остовный подграф Η имеет г компонент связности, то имеется хг различных строго несобственных раскрасок, отвечающих остовному подграфу Н. Заметим, что каждая собственная или несобственная раскраска графа G является строго несобственной раскраской некоторого его остовного подграфа. При этом собственным раскраскам графа G отвечает нулевой остовный подграф. Обозначим через N(i,j) число остовных подграфов графа G, имеющих г компонент связности и j ребер. Иными словами, это число (п, .7\г)-подграфов графа G.
180 Глава 6. Раскраски Из общего числа хп собственных и несобственных раскрасок вычтем сначала число строго несобственных раскрасок тех остовных подграфов, у которых имеется точно одно ребро. Если мы вычтем сумму г то мы вычтем указанное число, но вычтем еще и некоторую избыточную величину. Действительно, пусть е\ = щу\ ие2 = = и2У2 — два различных ребра графа G. Тогда в число строго несобственных раскрасок остовного подграфа, содержащего точно одно ребро е±, попадут и те, у которых вершины м2 и ν2 имеют одинаковый цвет, а это — строго несобственные раскраски остовного подграфа, содержащего точно два ребра е\ и е2. Более того, их число будет вычтено дважды — один раз для е\ и один раз для е2. Аналогично, число строго несобственных раскрасок остовных подграфов, содержащих точно 3, 4 и более ребер, будет вычтено соответствующее число раз. Чтобы восстановить баланс, мы добавим сумму 5>(i,2)z\ г При этом мы компенсируем двукратное вычитание числа строго несобственных раскрасок, отвечающих остовным подграфам с двумя ребрами, но снова возникнет необходимость компенсации излишне добавленных чисел строго несобственных раскрасок для остовных подграфов с тремя, четырьмя и более ребрами. Следовательно, число собственных раскрасок графа G равно χη - Σ Ν& ι)χί+Σ Ν(*> 2)χί" Σ Ν(*> 3)χί + · · · · г г г Так как JV(n, 0) = 1, отсюда вытекает т η Р(С,х) = ££(-1)'ЛГ(г,;0х' = j=0 г=1
§ 6.3. Коэффициенты хроматических многочленов 181 η т = Σ(Σ(-1>'*(<·'))*<· π Отметим, что многие из ранее полученных нами результатов о хроматических многочленах можно легко вывести из доказанной теоремы. Для подсчета коэффициентов хроматического многочлена P(G,x) в соответствии с доказанной теоремой необходимо перебрать 2т остовных подграфов графа G. Однако, как установил Уитни, можно существенно уменьшить число перебираемых подграфов. Зафиксируем некоторую нумерацию ребер обыкновенного графа G натуральными числами от 1 до т, т.е. установим взаимно однозначное соответствие между множествами EG и {1,...,т}. Разрушенным циклом будем называть любую простую цепь, полученную из некоторого цикла графа G удалением ребра с наибольшим номером. Справедлива следующая теорема, которую мы приводим без доказательства. Теорема 6.13 (Уитни, 1932). Разложение для хроматического многочлена P(G, χ), указанное в предыдущей теореме, сохранится, если N{i,j) считать равным числу (n,j,i)- подграфов п-графа G, не содержащих разрушенных циклов.
Глава 7 ВВЕДЕНИЕ В АЛГОРИТМЫ Начиная с этой главы мы переходим к систематическому обсуждению методов решения оптимизационных задач дискретной математики. Приведем несколько примеров дискретных оптимизационных задач. Пусть имеется несколько городов и известны попарные расстояния между городами. Два города считаются соседними, если есть дорога, соединяющая эти города и не проходящая через другой город. Требуется найти кратчайший путь между некоторой парой городов (задача о кратчайшем пути). Еще один пример: есть η станков и т деталей, каждую деталь можно обрабатывать на любом станке, но время обработки детали на одном станке может отличаться от времени ее обработки на другом станке. Предположим, что для каждой пары станок-деталь это время задано. Требуется так организовать производство деталей, т. е. разместить детали по станкам таким образом, чтобы суммарное время работы было наименьшим (задача оптимального назначения). Наконец, одной из самых популярных дискретных оптимизационных задач является следующая задача. Путешественник хочет объехать η городов, побывав в каждом ровно по одному разу, и вернуться в исходный город, затратив при этом минимальную сумму на поездку. Затраты на поездку складываются из затрат на переезды между парами городов, причем эти затраты заранее известны (задача коммивояжера).
§ 7. /. Алгоритмы и их сложность 183 Все приведенные выше задачи имеют ряд общих свойств, характерных для дискретных оптимизационных задач. Во-первых, в каждой задаче имеется лишь конечное число вариантов (путей между городами, способов распределения деталей по станкам, маршрута передвижения путешественника), из которых требуется осуществить выбор. Во-вторых, каждому варианту сопоставлена некоторая числовая характеристика (длина пути, суммарное время работы, стоимость поездки). В-третьих, требуется выбрать вариант, числовая характеристика которого достигает экстремума. Наиболее очевидный способ решения подобных задач — это полный перебор всех вариантов. Однако этот способ наименее удачен, поскольку все интересные с практической точки зрения ситуации возникают именно тогда, когда число возможных вариантов чрезвычайно велико. Полный перебор всех вариантов потребовал бы столь большого времени, что стал бы практически нереализуем даже на самых быстродействующих ЭВМ. К счастью, для многих важных задач дискретной оптимизации существуют методы решения, намного более экономичные, чем полный перебор. Именно такие задачи и алгоритмы их решения будут рассмотрены в этой и последующих главах. § 7.1. АЛГОРИТМЫ И ИХ СЛОЖНОСТЬ По устоявшейся терминологии различают массовые и индивидуальные задачи. Все вышеприведенные примеры дают образцы именно массовых задач. Индивидуальная задача получается из массовой при помощи фиксации набора условий. Например, из массовой задачи коммивояжера получится индивидуальная задача, если зафиксировать число городов и определить затраты на переезды между всеми парами городов. Каждая массовая задача (в дальнейшем просто задача) характеризуется размером. Размер задачи служит мерой количества входных данных и представляется одним или несколькими целочисленными параметрами. Например, размерностью задачи коммивояжера естественно считать число η городов, которые он собирается посетить.
184 Глава 7. Введение в алгоритмы Под алгоритмом понимается общий, шаг за шагом выполнимый способ получения решения данной задачи. Заметим, что существует несколько формализации понятия алгоритма (машины Тьюринга, рекурсивные функции, нормальные алгоритмы Маркова), однако их рассмотрение далеко выходит за рамки данной книги. Для определенности можно считать, что алгоритм является программой на некотором языке высокого уровня. Для оценки качества алгоритмов можно применять различные критерии. Одной из важнейших характеристик алгоритма является временная сложность в худшем случае. Пусть размер массовой задачи определяется одним целочисленным параметром п. Рассмотрим все индивидуальные задачи размера η и обозначим через t(n) максимальное число действий, которое необходимо для решения любой такой индивидуальной задачи. Функция t(n) — это и есть временная сложность алгоритма в худшем случае (или просто сложность алгоритма). Под действием, производимым алгоритмом, будем понимать выполнение простой «операции», обычно аппаратно реализованной на любой ЭВМ, а именно любой арифметической операции, операции сравнения, пересылки и т. п. Ясно, что при таком определении действия сложность алгоритма зависит от конкретного вида машинных команд. Поэтому нас всегда будет интересовать лишь асимптотическая сложность алгоритма, т.е. порядок роста сложности при условии, что размер задачи неограниченно возрастает. При сравнении скорости роста двух неотрицательных функций /(п) и д(п) удобно использовать следующие обозначения. Будем говорить, что /(п) = 0(д(п)), если существуют такие положительные константы с и JV, что /(п) ^ с · д(п) для всех η > N. В этой же ситуации можно использовать и обозначение д(п) = Ω(/(η)). Например, справедливы соотношения log2n = 0(η), η = = n(log2n),n = 0(2n). На практике алгоритм решения некоторой задачи считается достаточно хорошим, если сложность этого алгоритма есть 0(пк) при некотором А: > 0. В таком случае говорят, что задача может быть решена за полиномиальное время или, ко-
§ 7. /. Алгоритмы и их сложность 185 роче, что задача полиномиально разрешима, а сам алгоритм называют полиномиальным. Если сложность алгоритма равна 0(п), то такой алгоритм называется линейным. Напротив, если алгоритм имеет сложность Ω(αη) при некотором α > 1, то его называют экспоненциальным. Отметим, что как задача о кратчайшем пути, так и задача оптимального назначения являются полиномиально разрешимыми. В то же время для задачи коммивояжера неизвестен полиномиальный алгоритм; впрочем, нет и доказательства того, что такой алгоритм не существует (см. [18]). Важность понятия сложности алгоритма хорошо иллюстрируют следующие таблицы, заимствованные из книги [6]. Первая таблица построена в предположении, что один шаг работы алгоритма требует для своего выполнения 1 миллисекунду. Как следует из табл. 1, при увеличении времени с 1 секунды до 1 часа, т.е. в 3,6·103 раз, размер задачи, решаемой алгоритмом сложности 2П, увеличивается только в 21/9 раза, а для алгоритма сложности η — ровно в 3,6 · 103 раз. Может показаться, что рост скорости вычислений, вызванный появлением новых ЭВМ, уменьшит значение эффективных, т.е. имеющих «небольшую» сложность, алгоритмов. Однако, как это видно из табл. 1, в действительности происходит в точности противоположное. С ростом быстродействия ЭВМ становится возможным решение задач все большего размера, и именно от сложности алгоритма зависит, насколько увеличение скорости ЭВМ влияет на увеличение размера задачи. Таблица 1 Сложность алгоритма η η log2 n η2 η3 2η Максимальный разме за 1 с 1000 140 31 10 9 за 1 мин 6 · 104 4893 244 39 15 ρ задачи за 1 ч 3,6-106 2 · 105 1897 153 21
186 Глава 7. Введение в алгоритмы Рассмотрим теперь табл. 2. Пусть для решения некоторой задачи имеется алгоритм сложности п3. Тогда десятикратное увеличение скорости быстродействия ЭВМ позволит увеличить размер задачи, решаемой за 1 минуту, в 2,15 раза. Переход к алгоритму со сложностью п2, позволит решить задачу в 6 раз большего размера (см. табл. 1). Если в качестве единицы времени взять 1 час, то сравнение будет еще более впечатляющим. Таблица 2 Сложность алгоритма η ηlog2 n η2 η3 2η Максимальный размер задачи, разрешимой за единицу времени На современных ЭВМ К L Μ N Ρ На ЭВМ с 10-кратной скоростью \0К Почти 10L при больших L 3,\Ш 2,\5Ν Ρ+ 3,3 На ЭВМ с 1000- кратной скоростью 1000/Г ПочтиЮООХ, при больших L 31, ем ION Ρ + 9,97 Отметим, что для алгоритма сложности 2П десятикратное увеличение скорости ЭВМ добавляет к размеру разрешимой задачи только три единицы, тогда как для алгоритма сложности п2 происходит увеличение в три раза, а для алгоритма сложности η — в десять раз. § 7.2. ЗАПИСЬ АЛГОРИТМОВ Предполагается, что читатель знаком с каким-нибудь языком программирования высокого уровня. Для записи алгоритмов будет использоваться упрощенный Паскаль, являющийся неформальной версией языка Паскаль. В упрощенном Паскале такие понятия, как константа, переменная, оператор, функция и процедура имеют обычное зна-
§ 7.2. Запись алгоритмов 187 чение. Заметим, что при описании алгоритмов тип данных явно объявляться не будет, поскольку он всегда будет понятен из контекста. Упрощенный Паскаль позволяет применять традиционные конструкции математики, в частности разрешается использовать любые математические предписания, если они понятны и перевод их в операторы языка Паскаль (или другого языка высокого уровня) не вызывает затруднений. Операторы упрощенного Паскаля записываются по правилам, принятым в языке Паскаль. В частности, составной оператор заключается в операторные скобки begin и end. Договоримся, что операторы, записанные в одной строке, образуют составной оператор; в такой ситуации операторные скобки будут иногда опускаться. Для обеспечения большей наглядности при описании алгоритмов в упрощенный Паскаль вводятся некоторые дополнительные операторы: • оператор цикла for χ e X do Ρ (для каждого элемента χ из множества X выполнить оператор Р); • условный оператор if exists x, B(x) then Ρ else Q (если существует элемент χ, удовлетворяющий условию В(х), то выполнить оператор Р, иначе выполнить оператор Q)\ • оператор χ *-> у (обмен значениями между χ и у). При описании алгоритмов приходится использовать такие структуры данных, как списки, стеки и очереди. Список L = = (ii,.../n) является конечной последовательностью однотипных элементов. В отличие от массива, число элементов в списке заранее не фиксируется. Заметим также, что список может не содержать ни одного элемента, т.е. он может быть пустым. В этом случае будет использоваться обозначение L = nil. Список S = (si,...,sn) называется стеком, если в нем выделен элемент, называемый вершиной (будем считать, что в непустом стеке вершиной является последний элемент, а в пустом стеке вершина не определена), и заданы следующие две процедуры и функция:
188 Глава 7. Введение в алгоритмы • S <= χ — втолкнуть χ в стек, т. е. получить список вида \S\, . . . , Sni Χ), • χ <= S — вытолкнуть вершину непустого стека в переменную х. В результате выполнения этой процедуры список 5 принимает значение (sb... ,sn_i), а х = sn; • top(S) — значением этой функции является вершина стека. Список Q = (</i,...,gn) называется очередью, если в нем выделены начало (элемент <ji) и конец (элемент qn) и определены две процедуры: • Q <= χ — втолкнуть χ в конец очереди, т.е. получить список (gi,...,gn,ar); • χ 4= Q — исключить из непустой очереди начало и передать его в переменную х. После выполнения этой процедуры Q = (s2,..., sn) и χ = si. Если ν — вершина графа G, то через list[v] обозначается список вершин, смежных с v. Аналогично, для вершины ν ориентированного графа G через Hst[v] (соответственно /isi[i;]) будет обозначаться список концов, исходящих из ν дуг (соответственно список начал, входящих в ν дуг). При записи алгоритма строки обычно будут нумероваться с тем, чтобы можно было указать на определенный оператор и группу операторов. Договоримся об обозначениях для часто используемых функций. Поскольку в дальнейшем будут использоваться только логарифмы по основанию 2, вместо log2x будем писать просто logx. Для произвольного действительного числа χ через [х\ (целая часть или дно х) будем обозначать наибольшее целое число, не превосходящее х, а через \х] (потолок х) — наименьшее целое число, большее или равное х.
§ 7.3. Корневые и бинарные деревья 189 § 7.3. КОРНЕВЫЕ И БИНАРНЫЕ ДЕРЕВЬЯ Дерево Τ = (V, Ε), в котором зафиксирована некоторая вершина г, называется корневым деревом с корнем г. Такое корневое дерево будет обозначаться через (Г, г). На множестве вершин V корневого дерева можно определить следующее отношение: и ^ ν тогда и только тогда, когда ν лежит на простой (г,и)-цепи. Очевидно, отношение <; на множестве вершин корневого дерева является отношением частичного порядка. Таким образом, корневое дерево с корнем г является одновременно частично упорядоченным множеством, в котором г является наибольшим элементом. Это частично упорядоченное множество удобно обозначить через (Г, ^). Корневые деревья принято изображать в виде диаграмм соответствующих частично упорядоченных множеств (рис. 65). Рис. 65 Минимальные элементы частично упорядоченного множества (Г, ^) часто называются листьями корневого дерева (Г, г). Если и < ν, то говорят, что и — потомок ν, г ν — предок и. Очевидно, что если υ, w — предки вершины ад, то они сравнимы в частично упорядоченном множестве (Г, ^). Поэтому среди предков вершины и существует наименьший предок х\ говорят, что χ — отец вершины и, а и — сын вершины х. Для произвольной вершины ν через ν обозначим поддерево с корнем ν\ это корневое дерево состоит из самой
190 Глава 7. Введение в алгоритмы вершины ν и всех ее потомков. На рис. 65 вершина и является листом, вершина w — предок вершин и и ν, причем для вершины ν она является отцом, вершины ν и ζ несравнимы. Длина простой (г,г;)-цепи называется уровнем вершины v. Высота h(T) корневого дерева (Г, г) — это наибольший из уровней его вершин. Установим связь между высотой корневого дерева и числом его листьев. Лемма 1. Пусть (Г, г) — корневое дерево высотой h, в котором каждая вершина имеет не более чем к сыновей. Тогда число листьев этого дерева не превосходит kh. Доказательство. Утверждение, очевидно, выполнено при h = 1. Пусть h > 1. Для каждого сына Si (1 ^ г ^ ρ ^ к) корня г рассмотрим корневое дерево Г» = S{. Ясно, что h(Ti) < h. Поэтому к каждому дереву Т*, 1 < г ^ р, применимо предположение индукции. Следовательно, число листьев в дереве Τ не превосходит ρ · kh~l ^ к · kh~l ^ kh. D В приложениях часто используются так называемые бинарные (двоичные) деревья. Бинарное дерево — это корневое дерево, обладающее следующими дополнительными свойствами: 1) каждая вершина имеет не более двух сыновей; 2) для любой вершины ν каждый сын имеет дополнительный признак — он является либо левым (left(v)), либо правым (right(v)). Удобно считать, что существует пустое бинарное дерево, т.е. бинарное дерево с пустым множеством вершин. С учетом этого соглашения для каждой вершины ν определено левое поддерево Left(v) и правое поддерево Right(v). Если поддерево Left(v) (соответственно Right(v)) непусто, то его корнем является левый (соответственно правый) сын вершины v. Запись г = nil служит для обозначения пустого бинарного дерева. Поэтому отсутствие у вершины ν данного бинарного дерева левого (соответственно правого) сына можно выразить при помощи равенства left(v) = nil (соответственно right(v) = nil). При работе с бинарными деревьями будет
§ 7.3. Корневые и бинарные деревья 191 использоваться процедура Create(r), добавляющая вершину в пустое бинарное дерево (реализация этой процедуры в конкретном языке программирования зависит, разумеется, от способа представления бинарного дерева и возможностей языка). Поскольку каждое бинарное дерево либо является пустым, либо состоит из корня и двух его поддеревьев — левого и правого, класс бинарных деревьев допускает рекурсивное описание. Рекурсивная природа бинарных деревьев позволяет многие алгоритмы обработки бинарных деревьев описывать при помощи рекурсии. Остановимся на алгоритмах обхода бинарных деревьев. Рассмотрим следующие три способа обхода: 1) обход сверху вниз (обход в прямом порядке); 2) обход слева направо (обход во внутреннем порядке); 3) обход снизу вверх (обход в обратом порядке). Эти три способа обхода (в указанном выше порядке) реализуются тремя процедурами: PreOrder(y), InOrder(v) и PostOrder(v). В этих процедурах в каждой вершине ν бинарного дерева выполняется оператор Ρ{ν). Procedure PreOrder(v); begin if ν φ nil then P(y)\ PreOrder(left(v))\PreOrder(right(v))\ end; Procedure InOrder(v)\ begin if ν φ nil then InOrder(left(v))\ P(v)\ InOrder{right{v))\ end; Procedure PostOrder(v)\ begin if ν φ nil then PostOrder(left(v))\ PostOrder(right{v))\ P(v)\ end. На рис. 66 каждая из этих трех процедур применяется к бинарному дереву, вершины которого помечены числами. Справа от дерева показан тот порядок, в котором соответствующая процедура обходит бинарное дерево (1 — обход
192 Глава 7. Введение в алгоритмы в прямом порядке, 2 — обход во внутреннем порядке, 3 — обход в обратном порядке). 10 1) 10, 6, 5, 8, 7, 14, 12, 15; 2) 5, 6, 7, 8, 10, 12, 14, 15; 3) 5, 7, 8, 6, 12, 15, 14, 10. Рис. 66 Пусть (Г, г) — бинарное дерево, вершины которого помечены элементами некоторого линейно упорядоченного множества L. Иными словами, определено отображение λ из множества вершин V бинарного дерева в множество L. Такое бинарное дерево называется деревом поиска, если для любой вершины ν е V выполнены условия: 1) Х(и) < Χ(ν) для произвольной вершины и из Left(v)\ 2) Х(и) ^ X(v) для произвольной вершины и из Right(v). Лемма 2. Обход дерева поиска во внутреннем порядке сортирует метки вершин в порядке возрастания. Читатель без труда проверит это утверждение, применив индукцию по высоте дерева поиска. Свойство дерева поиска, отмеченное в лемме 2, лежит в основе следующего способа сортировки последовательностей. Для данной последовательности (#ι,... ,#п) элементов из множества L сначала строим дерево поиска так, что метками вершин являются элементы последовательности, а затем обходим это дерево во внутреннем порядке. Дерево поиска изображено на рис. 66. Здесь же показано, что в результате обхода этого дерева во внутреннем порядке метки вершин сортируются в порядке возрастания. А
§ 7.4. Сортировка массивов 193 Для построения дерева поиска из данной последовательности применяется следующая рекурсивная процедура. Procedure Add(r,x)\ begin if r=nil then Create(r)\ X(r) := χ else if χ < X(r) then Add(left(r),x) else Add{right(r),x) end. Эта процедура к уже существующему дереву поиска с корнем г добавляет очередной элемент χ так, что свойство быть деревом поиска сохраняется. Заметим, что процедура Add(r,x) написана в предположении, что все элементы исходной последовательности попарно различны. Нетрудно понять, что такой способ сортировки последовательностей имеет сложность 0(п2). Обширный материал, относящийся к затронутым в этом разделе вопросам, читатель найдет в книгах [13,30,49]. § 7.4. СОРТИРОВКА МАССИВОВ Пусть α = [αχ,... ,αη] — массив, составленный из элементов некоторого линейно упорядоченного множества L. Сортировка массива α состоит в нахождении такой перестановки σ множества {1,... ,п}, что ασ(ΐ) < ασ(2) ^ ... < ασ(η). Предполагается, что всю информацию о данном массиве мы можем получить, лишь применяя операцию сравнения к элементам массива. Оценим снизу сложность произвольного алгоритма сортировки массива из η элементов. Для этого построим так называемое дерево решений. На рис. 67 изображено дерево решений для массива [01,02,03], состоящего из трех элементов. Элементы дерева изображаются овалами и прямоугольниками. Овалы заключают проверяемые условия, в прямоугольниках записываются отсортированные массивы. Очевидно, что дерево решений массива из η элементов является бинарным деревом, причем количество листьев в этом дереве равно п\.
194 Глава 7. Введение в алгоритмы Пусть h — высота дерева решений, построенного для массива из η элементов. Из леммы 1 § 7.3 следует, что п! < 2h% откуда h ^ log(n!). Поскольку п! > пп/2 при η ^ 3, имеем log(n!) > nlog(n) Следовательно, справедлива Лемма 1. Высота дерева решений массива из η элементов больше, чем (nlogn)/2. хх< х9< х2\ дс, < хг< дса дса < х9< χί\ хг< х2< хг Рис. 67 Предположим теперь, что к массиву α = [αι,...,αη] применен некоторый алгоритм сортировки. В дереве решений для массива из η элементов рассмотрим простую цепь Р, соединяющую корень дерева решений с листом, представляющим отсортированный массив а. Интуитивно понятно, что количество сравнений, использованных алгоритмом для сортировки массива а, не меньше длины цепи Р. Отсюда можно сделать вывод: Произвольный алгоритм сортировки массива из η элементов (при помощи сравнений) имеет сложность Q(nlogn). Перейдем к построению простого и эффективного алгоритма сортировки массивов, сложность которого равна O(nlogn). Этот алгоритм был предложен в 1964 году независимо Дж. Уильямсом (под названием HeapSort) и Флойдом
§7 4. Сортировка массивов 195 (под названием TreeSort). В некоторых книгах (см., например, [13,49] его называют алгоритмом пирамидальной сортировки. Такое название более удобно, и мы будем использовать именно его. Пусть α = [αι,...,αη] — произвольный массив. Свяжем с массивом α бинарное дерево Гп, считая, что в корне находится элемент αϊ и для каждого элемента а* положим й2г = left(ai) (если 2г ^ п) и u2i+i = right(a,i) (если 2г + 1 < п). Из этого определения, в частности, вытекает, что а* лист тогда и только тогда, когда 2г > п. На рис. 68 изображено бинарное дерево Г9. Лемма 2. Высота бинарного дерева Тп равна [bgnj. Доказательство. Пусть h — высота дерева Тп. Из определения Тп следует, что при каждом k < h элемент а2* имеет уровень к. Отсюда вытекает, что элемент а2н является листом в Тп. Поэтому 2/l+1 > п. Следовательно, 2h < η < 2/ι+1, откуда h ^ log η < h + 1, τ. e. h = [log n\. D Бинарное дерево Тп будем называть пирамидой или сортирующим деревом, если при 1 < г < п/2 элемент а» больше или равен каждому из своих сыновей. Займемся сначала той частью алгоритма пирамидальной сортировки, которая любое бинарное дерево Тп преобразует в пирамиду.
196 Глава 7. Введение в алгоритмы В основе алгоритма пирамидальной сортировки лежит следующая рекурсивная процедура Sift(i,j). В этой процедуре использована функция MaxS(i)% вычисляющая номер наибольшего из сыновей элемента а*. 1. procedure Sift(i,j); 2. begin 3. if г < \j/2\ then 4. begin 5. к := MaxS(i)\ 6. if a[i] < a[k] then 7. begin 8. a[i] <r>a[k}\ Sift(kJ); 9. end 10. end 11. end. Скажем, что дерево Тп является частичной пирамидой с индексом /, если при г ^ I все поддеревья с корнями а» являются пирамидами. Ясно, что любое дерево Тп является частичной пирамидой с индексом /, если I удовлетворяет неравенству I > [п/2\. Лемма 3. Если дерево Тп является частичной пирами- дой индекса 1 + 1, то в результате выполнения процедуры Sift{l,n) оно становится частичной пирамидой индекса I. Читатель без труда убедится в справедливости леммы 3, применив возвратную индукцию по индексу /. Теперь нетрудно понять, что последовательное применение процедуры Sift{i,n)y начиная с г = \п/2\ и заканчивая г = 1, преобразует любое дерево Тп в пирамиду. Заметим, что в пирамиде элемент, находящийся в корне, является наибольшим. Воспользовавшись этим свойством пирамиды, процесс сортировки массива можно представить следующим образом. Поменяв местами элементы а\ и ап, мы получим, что наибольший элемент массива поставлен на последнее место. Рассмотрим бинарное дерево Γη_ι, соответствующее массиву αϊ,... ,αη_ι (тем самым последний элемент
§ 7.4. Сортировка массивов 197 исключен из рассмотрения). Очевидно, дерево Γη_ι является частичной пирамидой с индексом 2. В силу леммы 3 однократное применение процедуры Sift(l,n- 1) преобразует Γη_ι в пирамиду. Далее нужно сделать перестановку элементов а\ и αη_ι и применить процедуру Sift(l,n-2) к дереву Гп_2. Продолжая этот процесс до тех пор, пока не останется одноэлементное дерево 7\, мы придем к отсортированному массиву. Запишем формальную версию алгоритма пирамидальной сортировки. Алгоритм 7.1 1. begin 2. for г := [п/2\ downto 1 do 3. Si/£(i,n); 4. for г := η downto 2 do 5. begin α[1] *-> a[i]\ Sift{l,i- 1); end 6. end. Ясно, что цикл в строках 2, 3 преобразует дерево Тп в пирамиду, а цикл в строках 4, 5 сортирует массив. В качестве примера применим этот алгоритм к массиву α = [2,3,6,1,4,8]. Сначала рассмотрим работу первого цикла (строки 2, 3). Все перестановки элементов массива будем отображать в дереве Те. 2 s*/*(3,6) 2 sift(2,6) 2 Siftq,6) 2 Х7Л7Х7Х7 14 8 14 613613 2 Рис. 69 Последнее из полученных деревьев представляет массив [8,4,0,1,3,2] и, очевидно, является пирамидой. Проследим теперь работу второго цикла (строки 4, 5).
198 Глава 7. Введение в алгоритмы Ογ+^Οι αι<->βδ θι^α4 * Siftjl, 5) « Sift(l9 4) 4 Siftjl, 3) λ7 /7' Λ7 SW, 2) Si/*(1, 1) 468 468 468 Рис. 70 На рис. 70 показаны перестановки, которые проделывает алгоритм при каждом выполнении второго цикла. Для удобства читателя вершины, метки которых уже расположены на своих местах, показаны незакрашенными. Оценим сложность алгоритма пирамидальной сортировки. Теорема 7.1. Алгоритм пирамидальной сортировки имеет сложность O(nlogn). Доказательство. Пусть α = [αϊ,..., αη] — данный массив, h — высота соответствующего бинарного дерева Тп. Обозначим через t(h) функцию, значением которой является число операций, необходимых для сортировки массива, которому отвечает дерево Тп. Ясно, что t(h) = ti(h) + ^(Л), где ti(h) и t2(h) — количества операций, необходимых для выполнения первого и второго циклов из алгоритма 7.1. Оценим сначала функцию ti(h). Напомним, что процедура Sift(i,n) находит номер m наибольшего из сыновей вершины ui, и в том случае, когда а* < ат, переставляет элементы й{ и am, a затем вызывает процедуру Sift(m,n). Ясно, что количество действий (сравнений и перестановок) с, выполненных между вызовами Sift(i,n) и Sift(m,ri), не зависит от
§ 7.4. Сортировка массивов 199 номера г. Убедимся, что t\(h) удовлетворяет неравенствам ίι(1) < с, ti(h) ^ 2ti(h - 1) + eft, если ft ^ 2. В самом деле, преобразование в пирамиды двух поддеревьев с корнями а,2 и аз требует не более 2ti(h — 1) действий, а процедура Sift(l,n) выполняет не более eft действий. Пусть /(ft) = c(2/l+1 - ft - 2). Покажем, что *i(ft) < /(ft) при любом ft ^ 1. Если ft = 1, то Пусть ft > 1. Тогда ti(h) ^ 2ti(Л - 1) + eft ^ 2c{2h - ft - 1) 4- eft = = c(2/l+1-ft-2) = /(ft). Таким образом, tx(h) ^ c(2h+1 - ft - 2) < ο2Λ+1 ^ 2cn. Переходя к оценке t2{h), следует лишь отметить, что второй цикл в алгоритме 7.1 выполняется η — 1 раз, а процедура Sift(l,i—1) (2 ^ г ^ η) требует не более eft действий. Отсюда *2(ft) ^ enft < en log п. Следовательно, ^(ft) = O(nlogn). Окончательно имеем t(h) = ti{h)+t2{h) = 0(п) + 0(п log η) = O(nlogn). D
Глава 8 ПОИСК В ГРАФЕ Многие алгоритмы на графах основаны на систематическом переборе всех вершин графа, при котором каждая вершина просматривается в точности один раз. В этой главе мы рассмотрим два стандартных и широко используемых метода такого перебора: поиск в глубину и поиск в ширину. Оба метода изучаются применительно к обыкновенным графам, поскольку на произвольные графы они могут быть распространены очевидным образом. В § 8.3 поиск в глубину применяется для отыскания компонент сильной связности в орграфе. §8.1. ПОИСК В ГЛУБИНУ Идея этого метода состоит в следующем. Поиск в обыкновенном графе G начинается с некоторой начальной вершины υ (с этого момента υ считается просмотренной). Пусть и — последняя просмотренная вершина (этой вершиной может быть и υ). Тогда возможны два случая. 1) Среди вершин, смежных с и, существует еще непросмотренная вершина w. Тогда w объявляется просмотренной и поиск продолжается из вершины w. Будем говорить, что вершина и является отцом вершины w (и = father[w]). Ребро uw в этом случае будет называться древесным. 2) Все вершины, смежные с и, просмотрены. Тогда и объявляется использованной вершиной. Обозначим через χ ту вершину, из которой мы попали в и, т. е. χ = father[u]\ поиск в глубину продолжается из вершины х.
§8.1. Поиск в глубину 201 Что произойдет, когда все просмотренные вершины будут использованы? Если в графе G не осталось непросмотренных вершин, то поиск заканчивается. Если же осталась непросмотренная вершина у, то поиск продолжается из этой вершины. Поиск в глубину просматривает вершины графа G в определенном порядке. Для того, чтобы зафиксировать этот порядок, будет использоваться массив пит. При этом естественно считать, что num[v] = 1, если υ начальная вершина, и num[w] = пит[и] + 1, если w просматривается сразу после того, как просмотрена вершина и. Пусть в обыкновенном графе G проведен поиск в глубину. Обозначим через Г множество всех древесных ребер. Все остальные ребра графа будем называть обратными ребрами. Множество всех обратных ребер будем обозначать через В. Результат применения поиска в глубину к связному графу G (рис. 71а) показан на рис. 716. Здесь сплошные линии изображают древесные ребра, а пунктирные линии — обратные ребра. Заметим, что нумерация вершин соответствует порядку, в которым они просматриваются поиском в глубину. Можно обратить внимание на то, что множество всех древесных ребер с выделенной начальной вершиной v\ образует корневое дерево с корнем v\. Это корневое дерево часто называют глубинным деревом или, короче, d-деревом графа G. Рис. 71
202 Глава 8. Поиск в графе Следует также отметить, что каждое обратное ребро соединяет в cf-дереве предка и потомка. Пусть G — несвязный граф, G\,...,Gk — множество всех его компонент связности. Обозначим через Т{ множество древесных ребер, выделенных поиском в глубину в компоненте Gi, а через ν* — корневую вершину из G*, т.е. первую просмотренную вершину подграфа С*. Таким образом, множество всех древесных ребер несвязного графа образует остовный лес. Фиксируя в каждом поддереве этого леса корневую вершину, мы получим глубинный лес или, короче, rf-лес графа G. Представим теперь формальное описание указанного алгоритма. В алгоритме используются описанные ранее массивы пит и father. В процессе работы алгоритма массив пит используется для распознавания непросмотренных вершин, а именно, равенство rmm[v] = 0 означает, что вершина υ еще не просмотрена. Вначале изложим версию алгоритма поиска в глубину, основанную на рекурсивной процедуре DFS(v) (название процедуры является аббревиатурой от англ. depth first search), осуществляющей поиск в глубину из вершины υ. Алгоритм 8.1 1. procedure DFS(v)\ 2. begin 3. rmm[v] := г; г := г -f l; 4. for и е list[v] do 5. if num[u] = 0 then 6. begin 7. T:=TU {uv}; father[u] := v; DFS{u) 8. end 9. else if num[u] < num[v] and и ^ father[v] then 10. В := В U {uv} 11. end; 12. begin 13. г:=1;Г:=0; В := 0; 14. for ν e V do num[v] := 0; 15. for υ e V do
§ 8.1. Поиск в глубину 203 16. if num[v] = 0 then 17. begin 18. father[v] := 0; DFS(v) 19. end 20. end. Алгоритм 8.1 применим к произвольному обыкновенному графу G. Если G — связный граф, то цикл в строках 15- 19 достаточно заменить вызовом процедуры DFS(v0) применительно к начальной вершине vo. Заметим, что в терминах алгоритма 8.1 вершина υ просмотрена с началом работы процедуры DFS(v)\ в тот момент, когда процедура DFS(v) закончила работу, вершина ν является использованной. Теорема 8.1. Пусть G — связный (п,т)~граф. Тогда: 1) поиск в глубину просматривает каждую вершину в точности один раз; 2) поиск в глубину требует 0{п -f m) операций; 3) подграф (V, Т) графа G является деревом. Доказательство. 1) Проверка в строке 5 гарантирует, что каждая вершина просматривается не более одного раза. Убедимся, что поиск в глубину просматривает каждую вершину. Пусть X — множество просмотренных вершин в тот момент, когда алгоритм закончил работу, Υ = V\ X. Если Υ непусто, то в силу связности графа G существует такое ребро ху, что χ е X, у G Y. Процедура DFS(x) полностью проработала, поэтому смежная с χ вершина у должна быть просмотрена. Получили противоречие. 2) Число повторений цикла в процедуре (начало цикла в строке 4) с учетом рекурсивных обращений равно сумме степеней всех вершин графа, т.е. оно равно 2т; следовательно, число операций пропорционально т. Число повторений цикла в строке 14, очевидно, пропорционально п. Отсюда вытекает, что поиск в глубину требует 0(п 4- т) операций. 3) Ясно, что условие пит[и] = 0 (строка 5) выполнится η — 1 раз. Отсюда следует, что \Т\ = η — 1. Кроме того, из 1) вытекает, что множество ребер Τ не содержит циклов. Таким
204 Глава 8. Поиск в графе образом (V, Т) — ацикличен и число ребер в этом графе на единицу меньше числа вершин. Следовательно, граф (V,T) — дерево. D Пусть G — связный граф, vo — некоторая его вершина. Предположим, что в графе G проведен поиск в глубину из вершины vo. Дерево (V,T) с выделенной вершиной υ0 является корневым деревом. Как отмечалось выше, это корневое дерево часто называют rf-деревом или глубинным деревом графа G. Для любой вершины и φ vq вершина father[u] является отцом и в d~дереве. Рассмотрим нерекурсивную версию процедуры DFS(v). Рекурсия устраняется при помощи стека 5, элементами которого являются вершины графа. Вершина υ является просмотренной, если rmm[v] Φ 0. Вершина υ становится использованной с момента, когда υ = top(S) (v находится в вершине стека) и все вершины, смежные с υ, уже просмотрены (в этом случае ν удаляется из стека). Вычисления, связанные с множеством обратных ребер В здесь опущены; читатель, разобравшийся с рекурсивной версией процедуры DFS(y), без труда восстановит их. 1. procedure DFS(v)\ 2. begin 3. rmm[v] := г; г := г + 1; 4. S := 0; S <= υ\ 5. while S φ 0 do 6. begin 7. ν := top{S); 8. if exists w, и e list[v] and num[u] = 0 9. then 10. begin 11. num[u] := г; г := г + 1; Τ := Τ U {uv}\ 12. father[u] := ν\ S <= и; 13. end 14. else υ <= S 15. end 16. end.
§ 8.2. Алгоритм отыскания блоков и точек сочленения 205 Отметим следующее важное свойство поиска в глубину: если ху — обратное ребро, то вершины х, у сравнимы в ά- дереве, т. е. одна из этих вершин является предком другой. В самом деле, пусть ху — обратное ребро графа G, причем пит[х] < пит[у]. Предположим, что вершины χ и у несравнимы в d~дереве. Из описания алгоритма 8.1 следует, что в промежуток времени между началом работы процедуры DFS(x) и ее завершением будут просмотрены только потомки этой вершины. Поскольку у е list[x] и в момент завершения процедуры DFS(x) вершина у еще не просмотрена, получаем противоречие с описанием алгоритма 8.1 § 8.2. АЛГОРИТМ ОТЫСКАНИЯ БЛОКОВ И ТОЧЕК СОЧЛЕНЕНИЯ Пусть G = (V, Е) — обыкновенный связный граф. В § 2.2 было определено понятие блока графа G и получен ряд утверждений о блоках. В частности, в этом разделе определено отношение « на множестве ребер Ε графа G: е « / Ф> е = / или е, / лежат на некотором цикле. Это отношение является эквивалентностью, причем каждый его класс совпадает с множеством ребер некоторого блока. Предположим, что в графе G из некоторой вершины νο проведен поиск в глубину. Поиск в глубину строит rf-дерево (У,Г) и массив пит, состоящий из номеров, которые присваиваются вершинам. Получим сначала в терминах rf-дерева признак того, что данная вершина является точкой сочленения. Лемма 1. Пусть t,v,w — вершины графа G, причем t — отец, aw — предок вершины υ. Если в графе G существует ребро е = vw, то е « / = vt. Доказательство. Можно считать, что w ^ t. Отсюда следует, что w > tt т.е. существует простая (ги,£)-цепь. Добавляя к этой цепи ребра е = vw и / = vt, получим цикл. D
206 Глава 8. Поиск в графе Аналогично проверяется Лемма 2. Пусть v,w — вершины графа G, причем w — потомок вершины v. Если в графе G существует ребро е = = vw, то е « / = vs для некоторого сына s вершины v. Пусть ν — произвольная вершина. Обозначим через ν поддерево d-дерева с корнем v. Для произвольного непустого множества X С ν через VB(X,v) будем обозначать множество всех таких вершин w, что w > υ и для некоторой вершины χ е X существует обратное ребро xw. Если X одноэлементно, т. е. X = {#}, то вместо VB({x},v) будем писать VB(x,v). Лемма 3. Пусть £, v, s — вершины графа G, причем t — отец, as — сын вершины υ. Ребра е = vt и f = vs лежат на общем цикле тогда и только тогда, когда VB(s,v) φ 0. Доказательство. Предположим, что ребра е = vt и / = vs лежат на общем цикле С, имеющем вид щ,..., ир, щ. Можно считать, что и\ = v, U2 = s, Up = t. Найдется наименьшее число q > 2 такое, что uq ^ s. Ясно, что q ^ ρ и ребро uq-\uq является обратным, следовательно, вершины uq-\ и uq сравнимы в rf-дереве. Поскольку uq-\ < s, имеем uq ^ v. Учитывая, что С — цикл и щ = ν, получаем неравенство uq ^ t. Таким образом, uq e VB(s,v)y поэтому VB(s,v) φ 0. Обратно, пусть w e VB(s,v). Тогда w ^ t и существует обратное ребро xw, причем χ ^ s. Ясно, что χ — потомок вершины w в d-дереве. Поэтому существует простая (wyx)~ цепь Р, причем Ρ содержит ребра vt и vs. Добавляя к цепи Ρ ребро xw, получим требуемый цикл. D Лемма 4. Вершина ν является точкой сочленения тогда и только тогда, когда выполняется одно из двух следующих условий: 1) ν — корень d-дерева, имеющий не менее двух сыновей', 2) ν не является корнем и для некоторого сына s вер- шины ν множество VB(s,v) пусто. Доказательство. Пусть ν — точка сочленения графа G. Тогда ν — общая вершина различных блоков. Следователь-
§ 8.2. Алгоритм отыскания блоков и точек сочленения 207 но, существуют вершины #,у, обе смежные с υ и такие, что νχ т^ vy. Предположим, что υ — корень d~дерева. Тогда х,у% очевидно, являются потомками v. В силу леммы 2 существуют сыновья s\,s2 вершины ν такие, что vs\ « vx, vs2 ~ vy. Поскольку νχ 96 vyt имеем vs\ 96 vs2. Отсюда, в частности, следует, что Пусть ν не является корнем d-дерева и t - отец вершины v. Нетрудно понять, что либо vt 96 νχ, либо vt 96 vy- Без ограничения общности можно считать, что vt 96 νχ. Применение леммы 1 показывает, что χ потомок вершины v. В силу леммы 2 существует такой сын s вершины υ, что vx » vs. Ясно, что vt 96 vs и из леммы 3 следует пустота множества VB(syv). Проверим обратное утверждение. Предположим сначала, что выполнено условие 1), т.е. вершина ν — корень, имеющий двух сыновей s\ и s2. Убедимся, что ребра vsi и vs2 принадлежат разным блокам. Допустим, рассуждая от противного, что ребра vs\ и vs2 лежат в одном блоке. Тогда существует цикл С, содержащий эти ребра. Если С имеет вид щ,...,ир,и\, то можно считать, что и\ = υ, и2 = si, up = S2. Поскольку S2 не является потомком si, найдется наименьшее число q ^ 2 такое, что ug не является потомком s\. Ясно, что q ζρ и ребро wg_iwg является обратным. Следовательно, uq — предок вершины si, а потому txg = v. Вершина ν содержится в С более одного раза, что противоречит определению цикла. Пусть выполнено условие 2). Обозначим через t отца вершины v. Поскольку VB(s,v) пусто, из леммы 3 получаем, что ребра vst vt лежат в разных блоках. Понятно, что ν — общая вершина этих блоков, следовательно, ν — точка сочленения. D Пусть X — произвольное множество вершин графа G. Обозначим через пит(Х) множество {rmm[v] \v € Χ}. На множестве V вершин графа G рассмотрим следующую функцию: L[v] = minnum({v} U VB{v,v)). Функция L обладает двумя важными свойствами:
208 Глава 8. Поиск в графе 1) с ее помощью легко распознавать точки сочленения (см. теорему 8.2); 2) значения этой функции весьма просто и естественно вычисляются при помощи поиска в глубину (см. лемму 6). Лемма 5. Пусть вершина ν не является корнем d-depe- ва, s — некоторый сын вершины υ. Множество VB(s,v) пусто в том и только том случае, когда L[s] ^ num[v]. Доказательство. В наших рассуждениях важную роль будут играть множества VB(s,s) и VB($,v). Нетрудно понять, что выполнены включения VB{s,v) С VB{s,s), VB{s,s)\VB{s,v) С {υ}. Предположим, что VB(syv) = 0. Тогда VB(s,s) С {υ}. Отсюда следует, что {s}UVB{s,s) С {s,v}. Вычисляя минимум номеров вершин, входящих в левую и правую части этого включения, получим L[s] ^ mm(num[s],num[v]) = num[v]. Обратно, если множество VB(s,v) непусто, то существует w e VB(s,v). Ясно, что num[w] < num[v]. Поскольку VB(s,v) С VB(i,s), имеем {s} U VB(i, v)C{s}U VB{s, s). Отсюда следует, что rmm[v] > num[w] ^ minnum({s} U VB(s,v)) ^ L[s]. Следовательно, L[s] < num[v]. D Из лемм 4 и 5 вытекает следующее утверждение. Теорема 8.2. Пусть вершина υ не является корнем d-дерева. Вершина ν — точка сочленения графа G тогда и только тогда, когда L[s] ^ num[v] для некоторого сына s этой вершины.
§ 8.2. Алгоритм отыскания блоков и точек сочленения 209 Лемма 6. Пусть ν — произвольная вершина графа G. Тогда L[v] = min (num[v], L[si],..., L[sp], num{VB(y, ν))), где si,...,5Р — все сыновья вершины v. Доказательство. Поскольку ν = s\ U · · · U sp U {v}, имеем VB(t), υ) = VB{Si, v) U · · · U VB(sp, ν) U VB(v, υ). Кроме того, {υ} U VB(ai,v) = {υ} U VB&^Si) при 1 ^ г ζ р. Следовательно, {υ} U VB(v, υ) = {υ} U VB(su sx) U ... •••иУБ(5р,5р)иУВ(г;,г;). Обозначим через W множество, стоящее в правой части этого равенства. Так как υ € W и num[v] < num[si] (1 ^ г ^ р), выполнено равенство minnum(W) = minnwm(WU {s\,... , sp}). Теперь нетрудно видеть, что L[v] = min (num[v],L[si],...,L[sp],num(VB(v,υ))). Π Дадим формальное описание алгоритма нахождения блоков и точек сочленения. Алгоритм 8.2 1. procedure BiComp(v)'t 2. begin 3. тшт[г;] := г; L[v] ;= г; г := г + 1; 4. for и е list[v] do 5. if num[u] = 0 then 6. begin 7. SE <= vu\ father[u] := v\ BiComp(u) 8. L[v] :=min(L[v],L[«]); 9. if L[u] ^ num[v] then
210 Глава 8. Поиск в графе 10. {получить новый блок; для этого из стека SE надо вытолкнуть все ребра вплоть до ребра vu) 11. end 12. else if num[u] < numji;] and и ф father [υ] then 13. begin 14. SE <= vu\ L[v] := min(L[v],num[u]); 15. end 16. end; 17. begin 18. г := 1; SE := nil; father[v0] := 0; 19. for ν € V do nwm[v] := 0; 20. BiComp(v0) 21. end. Процедура BiComp(v) является модификацией процедуры DFS(v) из алгоритма 8.1. В момент завершения работы процедуры BiComp(v) значение L[v] уже вычислено. Вычисление L[v] производится по формуле из леммы 6. В самом деле, в строке 3 выполняется присваивание L[v] := num[v]. Далее в строке 8 учитываются значения функции L для каждого из сыновей вершины υ. Наконец, в строке 14 находится минимальное из двух чисел: текущего значения L[v] и пит[и], где и — очередной элемент из множества VB(v,v). Необходимое и достаточное условие для вершины быть точкой сочленения, сформулированное в теореме 8.2, проверяется в строке 9. Разумеется, это условие нельзя применять к корневой вершине υο· Чтобы узнать, является ли vq точкой сочленения, нужно подсчитать количество сыновей этой вершины в rf-дереве. Для нахождения множества ребер очередного блока алгоритм 8.2 использует стек SE, элементами которого являются ребра графа G. Теорема 8.3. Алгоритм 8.2 правильно находит блоки графа G. Доказательство. Пусть граф G содержит q блоков. Проведем индукцию по числу q. Если q = 1, то граф G неразделим.
§ 8.3. Алгоритм отыскания компонент сильной связности 211 Из леммы 4 следует, что в d-дереве корневая вершина υο имеет единственного сына w. Нетрудно понять, что в момент завершения процедуры BiComp(w) стек SE будет содержать все ребра графа G. Поскольку L[vo] = num[vo] = 1 и граф не имеет точек сочленения, условие в строке 9 выполнится только при и = w. В результате все ребра графа G будут вытолкнуты из стека SE, и мы получим единственный блок. Пусть q > 1. Обозначим через щ, v\ ту пару вершин, для которой неравенство в строке 9 выполнится в первый раз. Ясно, что vi — точка сочленения графа G. К этому моменту процедура ВгСотр(щ) завершилась и точек сочленения не обнаружила. Поэтому после проверки условия в L[u\] ^ num[v\] из стека SE будут удалены ребра некоторого блока В. Теперь можно считать, что алгоритм обрабатывает граф Gi, составленный из всех блоков графа G, отличных от В. К графу G\ применимо предположение индукции, поэтому блоки, отличные от Б, также будут найдены правильно. D § 8.3. АЛГОРИТМ ОТЫСКАНИЯ КОМПОНЕНТ СИЛЬНОЙ СВЯЗНОСТИ В ОРГРАФЕ Пусть G = (У, Е) — связный орграф. Алгоритм 8.1 из § 8.1 легко приспособить для организации поиска в глубину в орграфе G. Для этого нужно лишь список list(v) заменить списком iisi(v), состоящим из концов всех дуг, выходящих из вершины υ. Все понятия, связанные с поиском в глубину в обыкновенном графе, очевидным образом применимы и для орграфов. В частности, в результате поиска в глубину в орграфе G строится cf-лес (глубинный лес), состоящий из ориентированных корневых деревьев. Тем самым на множестве вершин орграфа G вводится отношение частичного порядка: и < υ, если u,v принадлежат одной компоненте связности d-леса и и является потомком υ. Отметим также, что поиск в глубину разбивает множество всех дуг орграфа на четыре класса: 1) древесные дуги, идущие от отца к сыну; 2) обратные дуги, идущие от потомка к предку;
212 Глава 8. Поиск в графе 3) прямые дуги, идущие от предка к потомку, но не являющиеся древесными дугами; 4) поперечные дуги, соединяющие вершины, ни одна из которых не является потомком другой. На рис. 72 показан орграф и его глубинный лес. Рис. 72 Следующие два утверждения очевидны. Лемма 1. Если vu — поперечная дуга графа G, то пит[и] < num[v]. Лемма 2. Пусть u,v,w — такие вершины орграфа G, что пит[и] < num[v] < num[w] и w является потомком и. Тогда вершина ν — потомок вершины и. Применим поиск в глубину для построения алгоритма, способного распознавать сильную связность орграфа G. На самом деле будет построен алгоритм, который сможет в орграфе G выделять компоненты сильной связности, являющиеся максимальными сильно связными подграфами орграфа G. Заметим, что компоненты сильной связности являются классами отношения взаимной достижимости на множестве вершин орграфа G. Пусть d = {Vi,Ei) (I ^ i *ζ k) — компоненты сильной связности орграфа (?. Обозначим через г* такую вершину компоненты Gi (1 ζ г ζ к), что num[ri] = minnum(Vi). Пусть г — преобразование множества вершин орграфа G, определенное правилом: r(w) = η для любой вершины w e G*. Ясно, что
§ 8.3. Алгоритм отыскания компонент сильной связности 213 вершины и и w лежат в одной компоненте сильной связности тогда и только тогда, когда г (и) = r(w). Лемма 3. Если w ^ r(w), то w < r(w). Доказательство. Поскольку r(w) и w взаимно достижимы, существует кратчайшая (г(гу),гу)-орцепь Ρ длины q ^ 1. Проведем индукцию по q. Пусть ς = 1. Тогда существует дуга r(w)w. Ясно, что эта дуга древесная или прямая, поэтому w — потомок r(w). Допустим, что q > 1. Обозначим через χ предпоследнюю вершину орцепи Р. Легко проверяется, что вершины χ и r(w) взаимно достижимы, поэтому χ и r(w) лежат в одной компоненте сильной связности. Следовательно, к вершине χ применимо предположение индукции. Таким образом, вершина χ — потомок r(w). Если xw — древесная или прямая дуга, то w < < χ и потому w < r(w). Пусть xw является обратной или поперечной дугой. Применяя лемму 1, получаем, что num[w] < < пит[х]. Так как num[r(w)] < num[w] и χ — потомок r(w)t вершины r(w), w> x удовлетворяют условиям леммы 2, т.е. w < r(w). Ώ Лемма 4. Пусть и — произвольная вершина, удовлетворяющая неравенствам r(w) > u> w. Тогда r(u) = r(w). Доказательство. Поскольку r(w) > и > w, существует (г(гу),гу)-орцепь Р, проходящая через вершину и. Кроме того, r(w) достижима из w. Следовательно, r(w) и и взаимно достижимы, т.е. r(u) = r(w). Ώ Пусть ν — произвольная вершина орграфа G. Как и в § 8.2, через ν обозначим поддерево d-леса с корнем v. Если X С г), то множество всех таких вершин w, что r(w) ^ ν и для некоторой вершины χ е X существует обратная или поперечная дуга xw, будем обозначать, как и раньше, через VB(X,v). Леммы 3 и 4 показывают, что вершины каждой компоненты сильной связности С», 1 < г < к, образуют в глубинном лесе поддерево с корнем г*. Лемма 5. Пусть ν и w — такие вершины графа G, что w e VB(v,v). Тогда r(w) = r(v).
214 Глава 8. Поиск в графе Доказательство. Поскольку w € VB{v,v)y выполнено неравенство r(w) ^ ν и существует обратная или поперечная дуга xw, где χ < υ. Ясно, что существует (г(гу),х)-орцепь Р, содержащая вершину v. Кроме того, найдется (гу,г(гу))-орцепь Q. Из орцепей Р, Q и дуги xw легко получить замкнутый ормаршрут, содержащий вершины υ и w. Поэтому r(w) = = r{v). Π Теорема 8.4. Пусть ν — произвольная вершина орграфа G. Равенство ν = г(у) выполнено тогда и только тогда, когда V\B(v, ν) С v. Доказательство. Пусть ν — такая вершина, что υ = г (υ). Возьмем произвольную вершину w e VB(v,v). В силу леммы 5 имеем r(w) = r(v) = v. Отсюда с учетом леммы 3 получаем, что w 6 v. Предположим, что ν φ r(v). Из леммы 3 следует, что ν < r(v). С другой стороны, существует (?;,г(?;))-орцепь Р. В орцепи Ρ найдем первую дугу xw такую, что w не принадлежит v. Очевидно, xw — обратная или поперечная дуга. Кроме того, легко проверяется, что w и υ лежат в одной компоненте сильной связности орграфа G. Следовательно, r(w) = = r(v) > v. Таким образом, w Ε VB(v,v), откуда вытекает, что VB(y,v) %v. D На множестве V вершин графа G рассмотрим следующую функцию: L[v] = minnum({v} U VB(v, υ)). Теорема 8.5. Пусть υ — произвольная вершина орграфа G. Равенство ν = r(v) выполнено тогда и только тогда, когда L[v] = num[v]. Доказательство. Пусть υ = r(v). Тогда VB(y, υ) С v. Поэтому min тшт(\ЛВ(г),υ)) > num[v]. Отсюда L[v] = num[v]. Предположим, что ν Φ r(v). Учитывая теорему 8.4, получаем, что существует w е VB(v,v) \v. Найдется такая вершина χ е г), что xw — обратная или поперечная дуга. Следовательно, num[w] < num[x]. Проверим, что num[w] < num[v]. Рас-
§ 8.3. Алгоритм отыскания компонент сильной связности 215 суждая от противного, допустим, что rmm[v] ^ num[w]. Поскольку w φ ν, имеем строгое неравенство num[v] < num[w]. К вершинам ν, w, x можно применить лемму 2, поэтому w € е ν, что невозможно. Из доказанного неравенства следует, что L[v] ^ num[w] < num[v]. Ώ Теорема 8.5 позволяет распознавать в каждой компоненте сильной связности вершины ν, удовлетворяющие условию ν = r(v). Сравнивая теорему 8.5 с теоремой 8.2, мы видим, что роль таких вершин для орграфов аналогична роли точек сочленения для обыкновенных графов. Лемма 6. Пусть ν — произвольная вершина орграфа G. Тогда L[v] = min (num[v\, L[si],..., £[sp], num(VB(v, υ))), где si,..., sp — все сыновья вершины v. Эта лемма проверяется аналогично лемме 6 из § 8.2. Перейдем к описанию алгоритма, позволяющего строить компоненты сильной связности орграфа G. Пусть к орграфу применен поиск в глубину. В компонентах сильной связности Gi> 1 ζ г < А:, ранее были выделены корневые вершины г*. С этого момента будем считать, что компоненты сильной связности занумерованы следующим образом: если 1 ^ г < j ζ Α:, то вершина г* использована поиском в глубину раньше, чем вершина Tj. Такая нумерация компонент сильной связности обладает следующим важным свойством. Лемма 7. Компонента сильной связности Gi, 1 ^ г < к, совпадает с множеством всех элементов из поддерева fit не принадлежащих компонентам G\,...,Gi-\. Из леммы 7 легко извлекается следующий способ нахождения компонент сильной связности. Определим стек S и будем помещать в него вершины орграфа G в том порядке, в каком их просматривает поиск в глубину. Если сразу после того, как вершина η использована, вытолкнуть из стека S все вершины до и включительно, мы получим компоненту Gi. Теперь мы можем привести формальное описание алгоритма для отыскания компонент сильной связности орграфа G.
216 Глава 8. Поиск в графе Алгоритм 8.3 1. procedure StrongComp(v)\ 2. begin 3. mrni[v] := г; L[v] := г; г := г -f 1; S <= ν; 4. for w e Ust[v] do 5. if num[w] = 0 then 6. begin 7. StrongComp{w)\ L[v] := min(L[i;],L[ii;]); 8. end 9. else if num[w] < num[v] and w G S then 10. L[v] := min(L[v],nwm[ii;]); 11. if L[v] = num[v] then 12. while num[top{S)] ^ nwm[v] do 13. begin 14. χ <= S\ добавить х к очередной компоненте сильной связности; 15. end 16. end; 17. begin 18. г := 1; S := nti; 19. for ν e V do num[v] := 0; 20. for ν e V do 21. if num[v] = 0 then StrongComp(v) 22. end. Процедура StrongComp(v) является модифицированной версией рекурсивной процедуры DFS(v) (см. § 8.1). Для данной вершины υ значение функции L[v] вычисляется циклом в строках 4-10 в соответствии с формулой, полученной в лемме 6. В строке 11 для вершины ν проверяется условие из теоремы 8.5, означающее, что ν — корневая вершина очередной компоненты сильной связности. Для нахождения компонент сильной связности использован упомянутый выше стек 5, элементами которого являются вершины орграфа G (строки 12-15). Кроме того, этот стек участвует в формировании условия, проверяемого в строке 9. Выполнение этого условия означает, что w е VB(v,v).
§ 8.3. Алгоритм отыскания компонент сильной связности 217 Мы изложили неформальные соображения по поводу правильности работы алгоритма 8.3. Перейдем к строгим рассуждениям. Теорема 8.6. Алгоритм 8.3 правильно строит компоненты сильной связности орграфа G. Доказательство. Занумеруем компоненты сильной связности Gi, 1 < г ^ &, в порядке использования корневых вершин Г{ поиском в глубину. В силу леммы 7 множество вершин V\ компоненты G\ совпадает с множеством f\t состоящим из вершины ri и всех ее потомков. В процессе работы процедуры StrongComp(r\) происходят обращения к процедуре StrongComp(u) для каждого из потомков вершины г\. Проверим, что ни в одной из этих процедур равенство L[u] = пит[и] не выполнено (здесь и далее речь идет о значениях функции L, вычисленных алгоритмом 8.3). Полагая противное, можно выбрать среди вершин, для которых равенство выполнено, минимальную вершину χ (напомним, что cf-лес является частично упорядоченным множеством). Ясно, что χ ^ г(х) = г\. Из теоремы 8.4 вытекает, что VB(x,x) % χ. Поэтому существует обратная или поперечная дуга yz, где у е х. Используя лемму 3, нетрудно проверить, что num[z] < пит[х). Выбор вершины χ гарантирует, что все вершины, просмотренные поиском в глубину, содержатся в стеке S. Следовательно, при выполнении процедуры StrongComp(x) условие в строке 9 (считая, что w = ζ) выполнится. Поэтому текущее значение L[x] не превосходит гшт[г] < пит[х]. Отсюда следует, что значение L[x]t подсчитанное процедурой, будет меньше чем пит[х]. Это противоречит выбору х. Покажем, что в процессе выполнения процедуры StrongComp(ri) условие L[ri] = num[r\] будет выполнено. Напомним, что множество г\ совпадает с множеством вершин компоненты Gi. Отсюда следует, что VB(u,u) С С VB(r\,r\) для любого потомка и вершины г\. Из теоремы 8.4 вытекает, что VJ3(fi,ri) С г\. При выполнении процедуры StrongComp(u) все просмотренные вершины находятся в стеке S. Поэтому значения L[u], уточняемые в строках 7
218 Глава 8. Поиск в графе и 10, всегда будут не меньше чем пит[гх]. С учетом присваиваний в строке 3 имеем L[r\] = пит[гх]. Для завершения доказательства применим индукцию по числу q компонент сильной связности орграфа G. Пусть q = 1. Тогда G = Gi, т.е. все вершины орграфа G, отличные от вершины п, являются ее потомками. Условие в строке 11 выполнится только один раз при υ = г χ. Поэтому из стека S будут вытолкнуты все вершины орграфа G. Предположим, что q > 1. Пусть алгоритм 8.3 начинает работу с вершины 17о. В процессе работы алгоритма после завершения работы процедуры DFS(rx) из стека S будут вытолкнуты все вершины компоненты сильной связности G\. Обозначим через G' подграф, полученный из орграфа G удалением компоненты Gx. Очевидно, к орграфу G' применимо предположение индукции. Следовательно, все компоненты, отличные от Gi, будут найдены правильно. D § 8.4. ПОИСК В ШИРИНУ Рассмотрим еще один способ систематического обхода всех вершин обыкновенного графа G, называемый поиском в ширину. Для описания поиска в ширину введем в рассмотрение очередь Q, элементами которой являются вершины графа G. Поиск начинается с некоторой вершины v. Эта вершина помещается в очередь Q и с этого момента считается просмотренной. Затем все вершины, смежные с ν, включаются в очередь и получают статус просмотренных, а вершина ν из очереди удаляется. Более обще, пусть в начале очереди находится вершина и. Обозначим через ui,...,up вершины, смежные спи еще непросмотренные. Тогда вершины ui,...,up помещаются в очередь Q и с этого момента считаются просмотренными, а вершина и удаляется из очереди и получает статус использованной. В этой ситуации вершина и называется отцом для каждой из вершин щ (и = father[ui], 1 < t < ρ). Каждое из ребер ищ, 1 < % < р, будем называть древесным ребром. В тот момент, когда очередь Q окажется пустой, поиск в ширину обойдет компоненту связности графа G. Если остались непросмотренные вершины (это возможно лишь в том случае, когда
§ 8.4. Поиск в ширину 219 граф G несвязен), поиск в ширину продолжается из некоторой непросмотренной вершины. Поиск в ширину просматривает вершины в определенном порядке. Как и раньше, этот порядок фиксируется в массиве пит. Если и — отец вершин и\,...,иру то пит[щ] = пит[и] + 4- г, 1 ^ г ^ ρ (для определенности мы полагаем, что сначала в очередь помещается щ, затем и^ и т.д.). Для начальной вершины υ естественно положить num[v] = 1. Поиск в ширину реализует описанная ниже процедура BFS (название процедуры является аббревиатурой от англ. breadth first search). Эта процедура использует описанные ранее массивы пит и father. Кроме того, она вычисляет множество всех древесных ребер Т. Массив пит удобно использовать для распознавания непросмотренных вершин: равенство гшт[и] = 0 означает, что вершина и еще не просмотрена. Алгоритм 8.4 1. procedure BFS{v)\ 2. begin 3. Q :— nil\ Q <= v\ num[v] := г; г := г -f 1; 4. while Q ^ nil do 5. begin 6. и <= Q\ 7. for w e list[u] do 8. if num[w] = 0 then 9. begin 10. Q <= w\ father[w] := u\ 11. num[w] := г; г := г + 1; Τ := Τ U {uw}\ 12. end 13. end 14. end 15. begin 16. i:=l;T:=0; 17. for ν e V do num[v] := 0; 18. for ν e V do 19. if num[v] = 0 then 20. begin father[v] := 0; BFS(v) end 21. end.
220 Глава 8. Поиск в графе Полезно сравнить процедуру BFS с нерекурсивной версией процедуры DFS (см. с. 204) и убедиться, что по существу первая процедура получается из второй заменой стека на очередь. Заметим также, что, применяя этот алгоритм к связному графу G, можно цикл в строках 18-20 заменить однократным обращением к процедуре BFS. Теорема 8.7. Пусть G — связный (п,т)-граф. Тогда: 1) поиск в ширину просматривает каждую вершину в точности один раз; 2) поиск в ширину требует 0(п + т) операций; 3) подграф (V, Т) графа G является деревом. Эта теорема доказывается аналогично теореме 8.1. В связном графе G поиск в ширину из вершины ν строит корневое дерево с множеством ребер Τ и корнем v. Это корневое дерево называется деревом поиска в ширину или, короче, Ь-деревом. Аналогично, если G произвольный обыкновенный граф, то поиск в ширину строит Ь-дерево в каждой компоненте связности графа G; объединяя эти деревья, мы получим остовный лес графа G, называемый в дальнейшем Ь-лесом этого графа. На рис. 73 показаны связный граф G и его Ь-дерево. ι Я i ч 9— Л ¥ ' 1 N 1ϋ4 1 / WVS Пусть в графе G проведен поиск в ширину. Занумеруем вершины графа в соответствии с порядком, в котором поиск
§ 8.4. Поиск в ширину 221 в ширину обходит вершины. А именно обозначим вершины графа через w^ 1 ^ г ^ п, считая, что num[wi] = г. В леммах 1-5 изучаются некоторые свойства поиска в ширину, отличающие его от поиска в глубину. Лемма 1. Вершина Wk является отцом вершины wi тогда и только тогда, когда к = min{i\wi e list(wi)}. Доказательство. Пусть Wk — отец вершины wi. Это значит, что непосредственно перед удалением Wk из очереди Q, вершина wi не была просмотрена. Если wv смежна с wi в гра- фе G и ρ < /, то wp была удалена из очереди Q раньше, чем Wk. Поэтому отцом wi оказалась бы вершина wp, что невозможно. Обратно, пусть к — наименьший из номеров вершин wit смежных с wi в графе G. Ясно, что при ρ < к вершина wv не смежна с вершиной wi и потому не может быть ее отцом. Отсюда следует, что Wk — отец wi. О Из леммы 1 следует, что ребро, не являющееся древесным, никогда не соединяет предка с потомком в Ь-дереве; по этой причине такие ребра графа G будем называть поперечными ребрами. Лемма 2. Пусть вершины Wk, wi являются отцами вершин wPf wq соответственно. Если ρ ^q, то к ^l. Доказательство. Предположим, что / < к. Из этого неравенства следует, что вершина wi будет использована раньше, чем Wk. Поэтому вершина wq, являющаяся сыном wi, попадет в очередь раньше, чем сын wp вершины Wk. Отсюда q < ρ, что невозможно. D Напомним, что в корневом дереве через h(u) мы обозначили уровень вершины и, равный расстоянию этой вершины от корня. Лемма 3. Если 1 ^р ^.q < η, то h(wp) ^ h(wq). Доказательство. Требуемое неравенство очевидно, если wp — корень Ь-дерева. Пусть wv не является корнем. Обозначим через s наибольший из номеров ρ и q и применим
222 Глава 8. Поиск в графе индукцию по s. Рассмотрим вершины Wk, w^ являющиеся отцами вершин wp, wq соответственно. В силу леммы 2 имеем к < /. Ясно, что к вершинам Wk, wi применимо предположение индукции. Следовательно, h(wk) ^ h(wi). Отсюда h(wp) = h(wk) + 1 ^ h(wi) + 1 = h(wg). Поскольку база индукции (при s = 2), очевидно, выполняется, лемма доказана. D Лемма 4. Если вершины wp и wq смежны в графе G и ρ < q, то h(wq) — h(wp) ^ 1. Доказательство. Пусть wi — отец вершины wq. Тогда из леммы 1 следует, что Ι ζ р. В силу леммы 3 имеем h{wt) ^ h(wp) ^ h(wq). Поскольку h(wq) — h(wi) = 1, получаем h(wq) - h(wp) ^ h(wq) - h(wi) = 1. D Лемма 5. Расстояние в графе G от вершины w\ (т. е. от корня b-дерева) до произвольной вершины и равно h(u). Доказательство. Достаточно проверить, что для произвольной (г171,и)-цепи выполнено неравенство s ^ h(u). Рассмотрим последовательность О = Λ(«ό).Μνι),...·Μ«.-ι).Μν.) = *(«)» (8.1) составленную из уровней вершин данной цепи. В силу леммы 4 соседние элементы последовательности (8.1) различаются не больше чем на 1. Отсюда вытекает, что последовательность (8.1) имеет наименьшую длину, если она является возрастающей. В этом случае последовательность должна иметь вид 0,l,..M/i(u). Следовательно, для произвольной последовательности (8.1) выполнено неравенство s ^ h(u). Ώ
§ 8.5. Алгоритм отыскания эйлеровой цепи 223 Пусть vq — корень Ь-дерева. Лемма 5 показывает, что простая (г;0,и)-цепь в Ь-дереве является кратчайшей (г;о,и)-цепью в графе G. Отсюда следует, что поиск в ширину может быть применен для решения следующей задачи: в связном графе G найти кратчайшую цепь, соединяющую данную вершину Vq С ПрОиЗвОЛЬНОй вершиной U. Для решения этой задачи необходимо в графе G из вершины vq провести поиск в ширину, а затем, используя массив father, построить требуемую кратчайшую цепь. § 8.5. АЛГОРИТМ ОТЫСКАНИЯ ЭЙЛЕРОВОЙ ЦЕПИ В ЭЙЛЕРОВОМ ГРАФЕ С эйлеровыми графами мы познакомились в § 3.1. Напомним, что замкнутая цепь в графе G называется эйлеровой, если она содержит все ребра и все вершины графа. Из теоремы 3.1 следует, что связный неодноэлементный граф эйлеров тогда и только тогда, когда каждая его вершина имеет четную степень. Этот раздел посвящен построению и анализу алгоритма, позволяющего в связном обыкновенном графе G с четными степенями вершин построить эйлерову цепь. В алгоритме используются два стека SWork и SRes; элементами обоих стеков являются вершины графа G. Кроме того, введен массив UstW, элементы которого — списки вершин. Мы считаем, что для каждой вершины ν начальное значение iis£W[i;] совпадает со списком всех вершин, смежных с вершиной ν, т. е. с list(v). Алгоритм 8.5 Вход: связный граф G = (V,E) без вершин нечетной степени, начальная вершина v0. Выход: эйлерова цепь, представленная последовательностью вершин в стеке SRes. 1. begin 2. SWork := nil, SRes := nil; 3. SWork <= v0; 4. for ν G V do UstW[v] := list[v]; 5. while SWork ^ nil do 6. begin
224 Глава 8. Поиск в графе 7. ν := tap{SWork)\ 8. if UstW(v) φ 0 then 9. begin 10. и :=лервая вершина iisiW[w]; И. SWork <=u\ 12. HstW(v) := HstW(v) \ {u}\ 13. UstW{u) := listw\u) \ \v}\ 14. end 15. else 16. begin ν <= SWork; SRes <= v\ end 17. end 18. end. Принцип работы этого алгоритма состоит в следующем. Алгоритм начинает работу с некоторой вершины vo, продвигаться по ребрам графа, причем каждое пройденное ребро из графа удаляется (строки 10-13). Ясно, что последовательное выполнение этой группы операторов позволяет выделить в графе некоторую замкнутую цепь. Затем начинается выполнение группы операторов из строки 16. Эти операторы выталкивают очередную вершину из стека SWork в стек SRes до тех пор, пока не выполнится одно из условий 1) стек SWork пуст (алгоритм заканчивает работу); 2) для вершины ν = top(SWork) существует непройден- ное ребро vu. В этом случае алгоритм продолжает работу из вершины и. На рис. 74 изображен эйлеров граф и эйлерова цепь, построенная алгоритмом 8.5 (предполагается, что все списки вершин упорядочены по возрастанию номеров). Теорема 8.8. Алгоритм 8.5 правильно строит эйлерову цепь в эйлеровом графе G. Доказательство. Заметим сначала, что из стека SRes вершины никогда не выталкиваются. Отсюда следует, что начиная с некоторого момента работы алгоритма стек SRes перестанет изменяться. Это произойдет после выполнения операторов в строке 16. Предположим, что стек SWork в этот момент непуст. Если υ = top(SWork), операторы в строках
§ 8.5. Алгоритм отыскания эйлеровой цепи 225 υΐ V4 υ7 ν19 υν υ„ υ6, vit υ4, υβ> υδ, υ8, υβ, υ7, ι>„ υβ, υ7, υ4, υχ Рис. 74 10-13 начнут добавлять вершины к стеку SWork (это означает, что в графе G из вершины ν можно построить цепь, состоящую из еще непройденных ребер). Ясно, что построение такой цепи должно прекратиться. Это означает, что мы придем в вершину w, для которой все инцидентные ей ребра уже пройдены (UstW(u) = 0). После этого начнут выполняться операторы из строки 16 и, следовательно, к стеку SRes добавится хотя бы одна вершина, что невозможно. Таким образом, стек SWork рано или поздно обязательно станет пустым, что приведет к завершению работы алгоритма. Пусть Ρ — цепь, содержащаяся в стеке SRes после окончания работы алгоритма. Легко понять, что вершина w помещается в стек SRes, если все ребра, инцидентные с wy уже пройдены. Отсюда следует, что для любой вершины цепи Ρ все ребра, инцидентные этой вершине, содержатся в цепи Р. Поскольку G — связный граф, цепь Ρ содержит все ребра графа G. Теперь легко понять, что Ρ — эйлерова цепь. D В заключение оценим сложность алгоритма 8.5. Для этого заметим, что при каждой итерации цикла либо к стеку SWork добавляется вершина (это означает прохождение очередного ребра), либо вершина переносится из стека SWork в SRes (другими словами, к строящейся эйлеровой цепи добавляется ребро). Отсюда следует, что число повторений цикла равно О(га). Если позаботиться о том, чтобы время, необходимое для удаления вершины из списка iisiW[v] было ограничено константой, то сложность алгоритма 8.5 будет равна О(га).
Глава 9 ЗАДАЧА О МИНИМАЛЬНОМ ОСТОВЕ Пусть G = (V, Е) — связный обыкновенный граф. Напомним (см. § 2.1), что его остовом называется остовный подграф, являющийся деревом. Остов (п, т)-графа легко найти поиском в глубину или поиском в ширину. Поскольку оба поиска имеют сложность 0(т + п) и в связном графе т > п - 1, остов связного (га,га)-графа можно найти за время 0(т). Граф G = {VjE) называется взвешенным, если задана функция с : Ε —> R. Это означает, что каждому ребру е такого графа поставлено в соответствие число с(е), называемое весом или стоимостью ребра е. Иными словами, взвешенный граф — это тройка (V,E,c). Для произвольного ненулевого подграфа Η его весом с(Н) будет называться сумма весов всех ребер подграфа Я. Остов Τ взвешенного графа G назовем минимальным остовом, если для любого остова Т" выполнено неравенство с(Т) < с(Г). Этот раздел посвящен решению следующей задачи; в данном связном графе найти минимальный остов (задача о ми- нимальном остове). Пусть G — связный граф. Ациклический остовный подграф F из G будем называть остовным лесом графа G. В том случае, когда остовный лес графа G связен, он является остовом графа G. Ребро е = uv называется внешним к остовному лесу F, если его концы лежат в разных компонентах связности леса F. Если Η — некоторая компонента связности остовного леса F, то через Ext(H) будет обозначаться множество всех внешних ребер, каждое из которых инцидентно
Задача о минимальном остове 227 некоторой вершине из Я. Ясно, что Ext(H) является сечением графа G. Предположим, что F — остовный лес связного взвешенного графа G. Будем говорить, что F продолжаем до минимального остова, если существует такой минимальный остов Г, что F ^ Т. Лемма 1. Пусть остовный лес F продолжаем до минимального остова и Η — одна из компонент связности леса F. Если е — ребро минимального веса из Ext(H), то остовный лес F + е продолжаем до минимального остова. Доказательство. Пусть Τ — такой минимальный остов графа G, что F ^ Τ и е ^ ЕТ. Из теоремы 2.1 следует, что подграф Τ + е содержит единственный цикл С. В § 4.9 было показано, что любое сечение и любой цикл имеют четное число общих ребер. Поскольку ребро е является общим для сечения Ext(H) и цикла С, найдется еще одно ребро /, общее для Ext(H) и С В силу выбора ребра е имеем с(/) ^ с(е). Ясно, что V = Т + е — f является остовом графа G и F + е С С Т". Кроме того, c(T')=c(T)+c(e)-c(f)<c(T). Учитывая, что Τ — минимальный остов, получаем с(Г') = = с(Т). Таким образом, Т' — минимальный остов, содержащий лес F + e, т. е. F + е продолжаем до минимального остова. D Лемма 1 позволяет сконструировать два алгоритма построения минимального остова во взвешенном (п,га)-графе G. Пусть Fq — остовный лес, являющийся нулевым графом. Ясно, что лес Fq можно продолжить до остова. Оба алгоритма строят последовательность Fo,Fu...,Fn-U (9.1) состоящую из остовных лесов, причем Fi = F^_i + eif где е^ — ребро, внешнее к остовному лесу Ή_ι, 1 < г < η — 1. Иногда указанную последовательность называют растущим лесом. Последовательность (9.1) строится таким образом, чтобы
228 Глава 9. Задача о минимальном остове для каждого г, 1 ^ г < η — 1 остовный лес Fi можно было продолжить до минимального остова. Ясно, что тогда Fn_i является минимальным остовом. При переходе от Ή_ι к Fi (т. е. при выборе ребра е*) возможны две стратегии. Стратегия 1. В качестве е* выбираем ребро минимального веса среди всех ребер, внешних к остовному лесу Fi-χ. Пусть Η — одна из двух компонент связности леса F^-i, содержащая концевую вершину ребра е*. Если Ή_χ продолжаем до минимального остова, то в силу леммы 1 лес Fi = = Fi-ι -f ei обладает тем же свойством. Стратегия 2. Здесь предполагается, что каждый остовный лес Fi (1 ^ г) из последовательности (9.1) имеет лишь одну неодноэлементную компоненту связности Н{. Удобно считать, что Но состоит из некоторой заранее выбранной вершины графа G. Таким образом, по существу, речь идет о построении последовательности #о, #ь..., #п_1, (9.2) состоящей из поддеревьев графа G, причем Hi = Щ-\ + eit где βι Ε Ext(Hi-i). Иногда указанную последовательность называют растущим деревом. Последовательность (9.2) строится следующим образом. В качестве Я0 берем произвольную вершину графа G. Пусть при некотором г, где 0 < ϊ < η — 1, дерево Hi уже построено. В качестве e^+i выбираем ребро минимального веса из множества Ext(Hi) и полагаем Hi+i = Щ +вг+\. Стратегия 1 реализуется алгоритмом Борувки-Краскала. Этот алгоритм впервые был изложен в работе О. Борувки в 1926 году. Однако данная работа была практически забыта. Появление, а затем и широкое распространение компьютеров стимулировало интерес математиков к построению алгоритмов решения дискретных задач. В результате в 1956 году этот алгоритм был заново открыт Краскалом. Отметим, что алгоритм Борувки-Краскала является частным примером жадного алгоритма, описанного в § 4.6 (см. замечание, сделанное после доказательства теоремы 4.16).
Задача о минимальном остове 229 Одной из основных операций в алгоритме Борувки-Крас- кала является операция слияния деревьев. Для эффективной организации этого процесса будем использовать три одномерных массива — name, next, size, каждый длины п. Пусть F — произвольный член последовательности (9.1). Массив пате обладает следующим свойством: пате[и] = = name[w] тогда и только тогда, когда вершины и и w лежат в одной компоненте связности леса F. С помощью массива next задается кольцевой список на множестве вершин каждой компоненты связности леса F. Если ν = name[w]f то sizefi;] равно числу вершин в компоненте связности остовного леса F, содержащей вершину w. Опишем процедуру Merge(y,w,p,q)t предназначенную для слияния двух деревьев Н\ = (V\,Ei) иЯ2 = Ο^,ϋ^) по ребру vw, внешнему к остовному лесу F. Предполагается, что υ Ε £ Vi, w Ε V2, ρ = name[v], q = name[w]. 1. procedure Merge(v,w,p,q)\ 2. begin 3. name[w] := p\ u:= next[w]\ 4. while name[u] φ ρ do 5. begin 6. name[u] := p\ и := nex£[u]; 7. end; 8. sizefp] := si^e[p] + size[q]\ 9. χ := next[v]\ у := next[w]; 10. ne#£[i;] := y\ next[w] := x\ 11. end. Отметим некоторые особенности работы этой процедуры. Объединение состоит, по-существу, в смене значений name[w] для всех w G Vi (цикл 4-7). Отсюда следует несимметричность процедуры, а именно сложности выполнения процедур Merge(v,w,p,q) и Merge(w1v1q,p) равны 0(|Vi|) и 0(|V^|) соответственно. Строки 8-10 нужны для сохранения структур данных. В них происходит формирование одного кольцевого списка для элементов объединения V\ U V2. Для этого достаточно исправить значения двух элементов next[v]
230 Глава 9. Задача о минимальном остове и next[w] и установить size[p] равным числу элементов в множестве VI U V2. Теперь можно дать формальное описание алгоритма Борув- ки-Краскала. Предполагается, что очередь Q содержит ребра графа. Ради простоты предполагается, что очередь Q организована при помощи массива длины га. В алгоритме используется процедура Sort(Q)\ эта процедура сортирует очередь Q по возрастанию весов ребер. Процедура Sort(Q) реализует пирамидальную сортировку, поэтому ее сложность равна 0(т log га) = 0(т log η), поскольку га ^ п2. Алгоритм 9.1 (Борувка, Краскал) Вход: связный взвешенный граф G = (V, J5, с). Выход: минимальный остов Τ графа G. 1. begin 2. Sort{Q)\ 3. for v G V do 4. begin 5. name[v] := v\ next[v) := v\ size[v\ := 1; 6. end; 7. Τ := 0; 8. while \T\ φ· η - 1 do 9. begin 10. vw <= Q\ ρ := name[v]; q := name[w]\ 11. if ρ φ- q then 12. begin 13. if si2e[p] > size[q] then 14. Merge(w1v1q1p) 15. else Merge{v,w,p,q)\ 16. Г:=Ги{ш} 17. end 18. end 19. end. Прокомментируем работу алгоритма 9.1. Цикл в строках 3-6 формирует остовный лес F0. В строке 11 проверяется принадлежность вершин υ и w различным деревьям. Слияние деревьев происходит в строках L3-15.
Ладана о минимальном остове 231 Для данной вершины ν обозначим через r(v) число изменений значения name[v] при работе алгоритма 9.1. Лемма 2. Для любой вершины ν связного взвешенного С = (У, Я, с) выполнено неравенство r(v) ^ log |V|. Доказательство. Требуемое неравенство очевидно, если \V\ = 1. Пусть \V\ > 1. Заметим, что при переходе от остовного леса Fn-2 к минимальному остову Fn_i процедура Merge срабатывает ровно один раз. Лес Fn_2 состоит из двух деревьев. Пусть V\, V2 — множества вершин этих деревьев. Тогда V\ U V2 = V, V\ Π V2 = 0. Предположим, что |Vi| ^ \V2\. Тогда \V\\ ^ |V| — 1, \V2\ ^ |V|/2. Нетрудно понять, что при слиянии множеств V\ и V2 значение name[v] сохранится, если ν Ε Vi, и изменится, если г; Ε V^. Применяя предположение индукции, получим r{v) ^ log |Vi I < log |V|, если ν Ε V\, r(v) ^ log \V2\ + 1 < log |V|, если г; Ε V2. Лемма доказана. П Теорема 9.1. Вычислительная сложность алгоритма Борувки-Краскала для связного взвешенного {п,т)-графа равна О (га log п). Доказательство. Цикл в строках 8-18 проработает в худшем случае га раз. Оценим число операций, необходимых для однократного выполнения тела цикла. Заметим, что присваивание в строке 16 выполняется ровно η — 1 раз. Ясно, что столько же раз будет выполнена процедура Merge. Из леммы 2 следует, что количество операций, выполненных при всех вызовах процедуры Merge, не превосходит ^ r(v) ^ < (η — l)logn. Отсюда сложность цикла 8-18 равна 0(т + -fnlogn) = O(mlogm) = O(ralogn), поскольку в связном графе выполнены неравенства η — 1 ^ га ^ п2. Осталось заметить, что процедура Sort также требует 0(т log га) операций. D
232 Глава 9. Задача о минимальном остове На рис. 75а изображен связный граф G. Числа, стоящие рядом с ребрами, означают веса ребер. Предполагается, что процедура Sort упорядочивает ребра следующим образом: у\г>2,г>зг>4,г>5^б,у\г;з,г^щ,у\у^у^уъчЩЩ^ъЩ- Минимальный остов показан на рис. 756. *>4 *>в 4 * ι>! з у* 4 ув yi у* »· а) Ь) Рис, 75 В приведенной ниже таблице указан порядок, в котором строился остов данного графа. \Т\ 0 1 2 3 4 5 name Vl,V2,V3»V4,V5,V6 Vl,Vl,V3,V4,V5,V6 Vl,Vl,t>3,V3,V5,V6 Vl,Vl,V3,V3,V5,V5 Vl,Vl,Vl,Vl,V5,V5 Vl,Vl,Vl,Vl,Vl,Vl τ 0 VIV2 VIV2, V3V4 V1V2, V3V4, V5V6 VlV2, V3V4, V5V6, V1V3 VlV2, V3V4, V5V6, V1V3, V3V5 Перейдем к рассмотрению алгоритма Ярника-Прима- Дейкстры, основанного на применении стратегии 2. Впервые рн появился в работе Ярника, опубликованной в 1930 году, затем был заново открыт Примом в 1957 году и независимо Дейкстрой в 1959 году. Заметим, что Дейкстра предложил очень эффективную реализацию этого алгоритма, связанную с расстановкой специальных меток. Для ребра е = yw вес с(е) будет иногда обозначаться через c(y,w). Напомним, что в обсуждаемом алгоритме строится последовательность (9.2), состоящая из деревьев, в которой *>в \л 4/ 2 5
Задача о минимальном остове 233 дерево Hi получается из Н^\ поглощением ближайшей к дереву #^_1 вершины. Для организации эффективного выбора такой вершины используются два массива: near[v] и d[v]. Пусть Η — произвольное дерево из последовательности (9.2), U — множество его вершин. По определению d[v] равно расстоянию от вершины ν до множества {/, иными словами d[v] = min{c(i;,u)|u e {/}. Пусть d[v] = c(v,w), w € U. Тогда near[v] = w. Иными словами, near[v] — ближайшая к ν вершина из множества U. Пусть W = V \ U. Будем считать, что если vw g E, то c(v,w) = -foo. Через Min(W) обозначим функцию, значением которой является вершина ν е W, имеющая минимальное значение метки d. Алгоритм 9.2 (Ярник, Прим, Дейкстра) Вход: связный взвешенный граф G = (V,i£,c), заданный матрицей весов л4[1..п, 1..п]. Выход: минимальный остов Τ графа G. 1. begin 2. w := произвольная вершина из V; 3. W:=V\{w}\T:=9; 4. for v G V do 5. begin 6. near[v] := w\ d[v] := A[v, w] 7. end; 8. while |Γ| φ η - 1 do 9. begin 10. ν := Min{W)\ и := nearfi;]; И. Г:=Ги{ш}; W := W\{v}\ 12. for ue W do 13. if d[u] > A[u,v] then 14. begin 15. near[w] := v\ d[u] = A[u,v]\ 16. end 17. end 18. end.
234 Глава 9. Задача о минимальном остове Теорема 9.2. Алгоритм Ярника-Прима-Дейкстры применительно к связному взвешенному {п,т)-графу имеет сложность 0(п2). Доказательство. Каждый проход цикла в строках 8-17 уменьшает на единицу число вершин в множестве W. После к проходов цикла 8-17 множество W будет содержать η — к вершин. Следовательно, число операций, необходимых для выбора вершины Min(W)y пропорционально η — к (строка 10). В строках 12-16 осуществляется пересчет меток для η — к — 1 вершин, т. е. число операций в цикле 12-16 пропорционально п — к — 1. Окончательно число операций в алгоритме 9.2 пропорционально сумме S = (n_l) + (n_2) + ...+2 + l = n(n — 1) имеющей, очевидно, порядок ηΔ что и доказывает теорему. D Проиллюстрируем работу алгоритма 9.2 на графе, изображенном ранее на рис. 75. Здесь в качестве вершины w выбрана вершина υ\. \τ\ 0 1 2 3 4 5 u = v\w νι Vl,V2 Vl,^2,V3 Vl,V2,V3,V4 Vl,V2,V3,V4,V5 Vl,V2,V3,V4,V5,V6 near V2,V3,V4,V5,V6 νι,νι,νι,νι,νι Vl,V2,Vl,Vi V3,V3,V3 V3,V4 V5 d V2,V3,V4,V5,V6 2,3,4,00,00 | 3,3,oo,oo 2,4,5 4,4^ 2 В результате работы алгоритма получится остов Τ = {17x172,17!l73,173174, 173175, 1^6 } (ребра остова перечислены в том порядке, в каком они были найдены). Этот остов изображен на рис. 756, т.е. он совпадает с остовом, построенным алгоритмом Борувки-Краскала.
Задача о минимальном остове 235 Заметим, что функция Min(W) при наличии нескольких претендентов выбирала тот, у которого номер меньше. Например, в третьей строке таблицы вершине г>3 отдано предпочтение перед вершиной 174. Аналогичная ситуация наблюдается в предпоследней строке. В научной литературе имеется много работ, посвященных различным вариантам постановки задачи о минимальном остове. Например, совсем недавно разработан алгоритм построения минимального остова в евклидовом графе, имеющий сложность 0(п log n). Здесь под евклидовым графом понимается полный граф, вершинами которого являются точки n-мерного евклидова пространства, а вес каждого ребра равен расстоянию между его концами. Задача о минимальном остове для евклидовых графов на плоскости (случай η = 2) находит непосредственное применение при проектировании радиоэлектронных изделий. Детальное обсуждение задачи о минимальном остове содержится в книгах [30,64,66].
Глава 10 ПУТИ В СЕТЯХ § 10.1. ПОСТАНОВКА ЗАДАЧИ Взвешенный орграф G = (V,E,c) называется сетью. Сеть может быть представлена в компьютере матрицей весов дуг или списками смежности Hst[v] или Ks£[v]. В этой главе, следуя традиции, нам удобно ормаршрут называть путем. Пусть Ρ — некоторый (г;,гу)-путь: ν = vo —► ^ι —► * * * —► Vk = w. Положим с(Р) = с(е1) + с(е2) + '- + с(ек). Число с(Р) назовем длиной пути Р. Наименьшую из длин (г;,гу)-путей назовем расстоянием от ν до wy а тот (ν,ΐϋ)- путь, длина которого равна расстоянию от ν до w, будем называть кратчайшим (ν, гу)-путем. Ясно, что расстояние от ν до w может отличаться от расстояния от w до v. Задача о кратчайшем пути (ЗКП) между фиксированными вершинами формулируется следующим образом: в заданной сети G с двумя выделенными вершинами s и t найти кратчайший (s,£)-nyTb. Отметим сразу, что ЗКП можно рассматривать и в неориентированных взвешенных графах, заменив каждое ребро vw графа двумя дугами vw, wv и считая, что веса обеих дуг равны весу ребра vw. Далее, если в произвольном графе положить вес каждого ребра равным единице, то получим данное ранее определение длины пути как числа входящих
§ 10.2. Общий случай. Алгоритм Форда-Беллмана 237 в него ребер. С этой точки зрения рассмотренная ранее (см. § 8.4) задача построения кратчайшего по числу ребер пути есть частный случай сформулированной только что задачи. § 10.2. ОБЩИЙ СЛУЧАЙ. АЛГОРИТМ ФОРДА-БЕЛЛМАНА Всюду в дальнейшем будем предполагать, что если вершины ν и w не являются смежными в сети G = (V,E,c), то c(v,w) = оо. Для удобства изложения и во избежание вырожденных случаев при оценке сложности алгоритмов будем считать, что η ^т. Это исключает ситуации, при которых большинство вершин изолированы. Кроме того, будем рассматривать только такие сети, в которых нет контуров отрицательной длины. Понятно, что если сеть содержит контур отрицательной длины, то расстояние между некоторыми парами вершин становится неопределенным, поскольку, обходя этот контур достаточное число раз, можно построить путь между этими вершинами с длиной, меньшей любого, наперед заданного вещественного числа. Метод решения ЗКП в некотором смысле аналогичен методу построения кратчайшего по числу ребер пути. Вначале размечаем все вершины данной сети (прямой ход алгоритма), вычисляя расстояния от s до всех вершин. Затем, используя специальные метки, обратным ходом строим требуемый путь. Интересно отметить, что для вычисления расстояния от s до заданной вершины t, мы вынуждены вычислять расстояния от s до всех вершин сети. В настоящее время не известен ни один алгоритм нахождения расстояния между фиксированными вершинами, который был бы существенно более эффективным, чем известные алгоритмы вычисления расстояний от одной из фиксированных вершин до всех остальных. Начнем с первого этапа — вычисления расстояний от s до всех вершин. Метод, который мы будем здесь использовать, часто называют динамическим программированием, а алгоритм вычисления расстояний — алгоритмом Форда-Беллмана. Появился этот алгоритм в работе Форда 1956 года и в работе Беллмана 1958 года.
238 Глава 10. Пути в сетях Основная идея алгоритма Форда-Беллмана заключается в поэтапном вычислении кратчайших расстояний. Обозначим через dk(v) длину кратчайшего среди всех (в,г;)-путей, содержащих не более чем к дуг. Легко видеть, что справедливы следующие неравенства: d\{v) ^ d2(v) ^ ^ dn-i{v). Поскольку по предположению в графе нет контуров отрицательной длины, кратчайший (в,г;)-путь не может содержать более чем η — 1 дуг. Поэтому величина dn-\(v) дает искомое расстояние от s до v. Для вычисления dn-\(v) достаточно последовательно вычислять dk{v) Для всех к = Ι,.,.,η— 1. Значения di(v) вычисляются просто: d\(v) = c(s,v) для всех ν е V. Пусть значения dk-i(v) вычислены для всех ν е V. Легко видеть, что dk+i(v) = min{dk(v),dk(w) +c(w,v)\w e V}. Организовать все эти вычисления можно с помощью всего лишь одного одномерного массива D длины п. Положив D[v] = c(s,i;) для всех вершин ν € V, будем иметь равенство D[v) =di(v). Просматривая после этого все вершины ν, произведем пересчет значений D[v] по формуле D[v] = min{jD[v],jD[«7] +c(w,v)\w <Ξ V). (10.1) После завершения первого пересчета значений D[v] для всех ν, будем иметь неравенство D[v] < ά2{ν). Почему неравенство? Пусть пересчет начинался с вершины щ. Ясно, что тогда D[v\] = d2(v\). Предположим, что следующей вершиной, для которой был сделан пересчет, была вершина v2. Тогда
§ 10.2. Общий случай. Алгоритм Форда-Беллмана 239 D[v2] ^ D[vi] + c{v\,V2), что вытекает из формулы пересчета (10.1). Отсюда следует, что возможна ситуация, в которой D[v2] = D[v\\ +c(vi,v2), и, кроме того, значение D[vi] могло быть получено на пути, состоящем из двух дуг. Следовательно, значение D[v2] может быть получено по некоторому пути из трех дуг, т.е. D[v2] < d2(v2). Повторив η — 2 раза процесс пересчета D[v], будем иметь равенство D[v] = dn_i(i;), т.е. D[v] дает расстояние от s до v. Прежде чем подробнее обосновать равенство D[v] = dn-i(v), дадим формальное описание алгоритма Форда-Беллмана. Построения самих кратчайших путей удобно вести с помощью одномерного массива Previous длины п, где Previous[v] дает имя вершины, предпоследней в кратчайшем (s,i;)-nyTH. Алгоритм 10.1 (Форд, Беллман) Вход: сеть G = (V,E,c), заданная матрицей весов А порядка п; вершины s и t. Выход: расстояния D[v] от s до всех вершин υ е V> стек S, содержащий кратчайший (s,£)-nyTb, или сообщение, что искомого пути в сети не существует. 1. procedure Distance 2. begin 3. D[s] := 0; Previous[s] := 0; 4. for ν € V \ {s} do 5. begin D[v] := i4[s, v]; Previous[v] :— s end; 6. for к := 1 to η - 2 do 7. for ν e V \ {s} do 8. for w e V do 9. if U[ti7] + A[w, v] < D[v] then 10. begin 11. D[v] :=D[w]+A[w,v]\ 12. Previous[v] := w 13. end 14. end; 15. begin 16. Distance] 17. if D[t] <oo then 18. begin
240 Глава 10. Пути в сетях 19. S:=nil\ S <=t; v := t\ 20. while Previous[v] ^ 0 do 21. begin ν := Previous[v]\ S <= υ end 22. end 23. else writeln («Not exists»); 24. end. Напомним, что по определению матрицы весов справедливы равенства А[г;,гу] = c(v,w) для всех vw е Ε и по нашему соглашению А[г;,гу] = оо, если в сети нет дуги vw. Вернемся к обоснованию равенства D[v] = dn-\{v). Заметим, что при первом входе в цикл, начинающийся в строке 6, справедливо равенство D[v] = di(v) для всех ν е V. Предположим, что при входе в к-ю итерацию цикла 6, справедливо неравенство D[v] ^ dk(v) для всех ν € V. Докажем, что по завершению этой итерации для любой вершины ν е V справедливо соотношение D[v]^dk+1(v). Действительно, после выполнения цикла в строке 6 для произвольной вершины ν выполнено неравенство D[v] ^ D[w] + A[w,v] для всех w e V. По предположению имеем неравенство D[w] < dk(w). Учитывая, что i4[ti7,v] = c(w, ν), получаем неравенства D[v] ^ ^ dk(w) + c{w,v) для всех вершин w. В частности, это неравенство выполнено и для той вершины w, которая является предпоследней в кратчайшем (s,i;)- пути, состоящем из к + 1 дуги. Отсюда сразу следует требуемое неравенство D[v] ^ dk+i(v). Таким образом, по завершению (п — 2)-й итерации цикла в строке 6 справедливо неравенство D[v] < dn-\(v) для всех вершин v. Выше уже отмечалось, что поскольку сеть не содержит контуров отрицательной длины, то dn-\(v) дает длину кратчайшего (в,г;)-пути. Следовательно, D[v] = dn-i(v). Тем самым обоснование этого равенства, а вместе с ним и обоснование корректности алгоритма Форда-Беллмана, завершено.
§ 10.2. Общий случай. Алгоритм Форда-Беллмана 241 Теорема 10.1. Алгоритм Форда-Беллмана имеет сложность 0(п3). Доказательство. Понятно, что сложность алгоритма определяется сложностью процедуры Distance, так как основная программа требует числа операций пропорционального п. Ясно, что количество операций в цикле 4 пропорционально п. Поскольку цикл в строке 6 выполняется η — 2 раза, в строке 7 — η — 1 раз, а в строке 8 — η раз и число выполнений оператора присваивания при каждом входе в цикл 8 ограничено константой, то сложность выполнения цикла, начинающегося в строке 6, есть 0((п - 2) · (п - 1) · п) = 0(п3). Ώ Заметим, что вычисления в процедуре Distance можно завершить при таком выходе из цикла по fc, при котором не происходит изменения ни одного значения D[v]. Это может произойти и при к < η — 2, однако такая модификация алгоритма не изменяет существенным образом его сложности, поскольку в худшем случае придется осуществить η — 2 итерации цикла по к. Иллюстрирует работу алгоритма Форда-Беллмана рис. 76. Веса дуг даны в скобках. Циклы в строках 7 и 8 выполнялись в порядке возрастания номеров вершин. ['k 1 2 3 D[l] 0 0 0 0 D[2] 1 -1 -1 -1 D[3] 2 2 2 2 D[4] oo 9 -1 -1 D[5] (X) 1 1 1 3 (-1) 5 (iN 2 (10) 4 Рис. 76
242 Глава ίΟ. Пути в сетях Рекомендуем читателю провести вычисления для этой сети в предположении, что вершины встречаются в порядке 1, 3, 2, 5, 4. (В этом случае расстояния будут вычислены за один проход, т. е. строки таблицы, соответствующие всем значениям fc, будут одинаковыми.) В случае когда сеть задана списками смежностей list[v], для решения ЗКП в алгоритме Форда-Беллмана достаточно цикл в строке 8 процедуры Distance записать следующим образом: 7. for w Ε list[v] do 8. if D[w] 4- A[w, v] < D[v] then 9. begin D[v] := D[w] -f c[v, w]\ Previous[v] := w end. В таком случае алгоритм Форда-Беллмана будет иметь вычислительную сложность 0(тп). § 10.3. СЛУЧАЙ НЕОТРИЦАТЕЛЬНЫХ ВЕСОВ. АЛГОРИТМ ДЕЙКСТРЫ Описываемый в этом разделе алгоритм позволяет вычислять в сети с неотрицательными весами расстояния от фиксированной вершины s до всех остальных вершин и находить кратчайшие пути более эффективно, чем алгоритм Форда-Беллмана. Этот алгоритм был предложен в 1959 году Дейкстрой. В основе алгоритма Дейкстры лежит принцип «жадности», заключающийся в последовательном вычислении расстояний сначала до ближайшей к s вершине, затем до следующей ближайшей и т. д. Для удобства изложения обозначим через d(v) расстояние от s до ν, т.е. длину кратчайшего (s,v)-nyTH в сети G. Первая ближайшая к вершине s вершина υ вычисляется просто: это сама вершина s, находящаяся на нулевом расстоянии от 5, т.е. d(s) = 0. Пусть ближайшие к вершин к вершине s определены и для всех вычислены расстояния d(y), т.е. определено множество S = {v\ = s,v2,... ,Vfc}, причем выполняются неравенства: l)0 = d(ui)<d(u2)<...<d(ufc); 2) d(vfc) ^ d(v), для всех υ Ε ^,.где F = V\S.
§ 10.3. Случай неотрицательных весов. Алгоритм Дейкстры 243 Здесь следует иметь в виду, что последнее неравенство имеет «потенциальный» характер, а именно мы считаем известными значения расстояний лишь для вершин νι,...,ν&, а для всех остальных вершин расстояния еще не вычислены, но для них известно, что неравенства 2) будут выполняться. Найдем следующую ближайшую к s вершину сети G. Для каждого w Ε F положим D(w) = min{rf(i;) 4- c(y,w)\v G S}. Можно отметить, что тогда D(w) определяет длину минимального (s,ii;)-nyTH среди всех (5,гу)-путей, все вершины в котором, кроме w, принадлежат S. Выберем теперь такую вершину w* e F, что выполнено условие D{w*) = min{D{w)\w e F}. Оказывается, что вершина w* является самой близкой к s среди всех вершин, не входящих в S (она является следующей (& + 1)-й ближайшей к s вершиной), и, более того, расстояние от вершины s до вершины w* в точности равно D(w*), т.е. справедливо равенство d(w*) = D(w*). Обоснуем вначале равенство d(ii;*) = D(w*). Пусть Ρ : s = wo, wi..., wr = w* — произвольный (s, гу*)-путь в сети G. Достаточно доказать неравенство D(w*) ^ с(Р). Среди всех вершин пути Ρ выберем вершину Wj с наименьшим номером среди тех, которые не входят в множество S. Так как начальная вершина пути Ρ входит в 5, а конечная — не входит в S, то такой номер j найдется. Итак, Wj-\ Ε S, Wj e F. Тогда из определения D[w], где w Ε F, и определения стоимости пути вытекают неравенства D(wj) < d{wj-\) 4- c(ti7j-.i,ti7j) ^ < c{Wo,Wi) + --- + c(Wj-i,Wj) = C{Q), где через Q обозначен (s,Wj)-nonnyTh пути Р. Из условия неотрицательности весов дуг вытекает, что c(Q) ^ с(Р). Кроме того, по выбору вершины w следует, что D(w*) ^ D(wj).
244 Глава 10. Пути в сетях С учетом этих неравенств получаем, что D(w*) ^ с(Р). Следовательно, d(w*) = D(w*). Осталось убедиться, что вершина w* является (к -f 1)-й ближайшей к s вершиной. Для этого достаточно доказать неравенство d(w*) < d(w) для всех w Ε Р. Зафиксируем (s,ii;*)-nyTb Pi и (s,ii;)-nyTb Р2, для которых с(Р\) = d(w*) и с(Р2) = d(w). В силу доказанного только что равенства D(w*) = d(ii;*) можно считать, что в пути Pi все вершины, кроме w*, лежат в S. Тогда по выбору вершины w* справедливо неравенство D(w*) ^ D(w), и, повторяя вышеприведенные рассуждения, приходим к неравенству D(w) < с(Р). Отсюда c(Pi) = й(гу*) = D(w*) ^ с(Р2) = d(w), что и требовалось доказать. Итак, выбирая вершину w e F с минимальным значением D[v] и добавляя к S, мы расширяем множество вершин, до которых вычислено расстояние, на один элемент. Следовательно, повторяя η — 1 раз процесс расширения множества S, мы вычислим расстояния до всех вершин сети G. При формальной записи алгоритма Дейкстры (алгоритм 10.2) ход вычисления расстояний от s до остальных вершин ν будем отражать в массиве D. По окончании работы алгоритма равенство D[v] = d(v) будет выполняться для всех ν е V. Без формального описания используется функция Min(F), которая возвращает вершину w Ε F такую, что справедливо равенство D[w] = min{jD[i;]|i; G Ρ}, иначе говоря, она находит тот самый элемент, который следует добавить к 5 и удалить из Р. Мы ограничимся только вычислением расстояний и меток Previous, с помощью которых кратчайшие пути строятся так же, как в алгоритме Форда-Беллмана. Алгоритм 10.2 (Дейкстра) (* Нахождение расстояний от фиксированной вершины до всех остальных в сети с неотрицательными весами *) Вход: сеть G = (V,E,c), заданная матрицей весов А порядка п; выделенная вершина s. Выход: расстояния D[v] от s до всех вершин ν е V, Previous[v] — предпоследняя вершина в кратчайшем (s,i;)- пути.
§ 10.3. Случай неотрицательных весов. Алгоритм Дейкстры 245 1. begin 2. D[s] := 0; Previous[s] := 0; F:=V\ {s}; 3. for υ £ F do 4. begin D[v] := A[s,v]; Previous[v] := s; end; 5. for k := 1 to η - 1 do 6. begin 7. w := Min{F)\ F:=F\ {w}; 8. for ν e F do 9. if D[w] 4- A[w, v] < D[v] then 10. begin 11. jD[v] :=D[w]+A[w,v]\ 12. Previaas[v] := w\ 13. end 14. end 15. end. Для доказательства корректности алгоритма 10.2 заметим, что при входе в очередную А>ю итерацию цикла 5- 13 уже определены к ближайших к s вершин и вычислены расстояния от s до каждой из них. При этом первоначальные значения расстояний вычислены в строке 4. Как показано выше, выполнение строки 7 правильно определяет (к 4- 1)-ю ближайшую к s вершину. Удаление w из F влечет, что D[w] больше меняться не будет, а по доказанному ранее пересчитывать его нет нужды, так как выполняется равенство D[w] = d(w). Осталось заметить, что выполнение строки 9 в каждой итерации цикла 5-13 позволяет правильно пересчитывать значения D[v] и отслеживать предпоследнюю вершину в кратчайшем пути. Следовательно, алгоритм 10.2 правильно вычисляет расстояния и кратчайшие пути от фиксированной вершины до всех остальных вершин сети. Работа алгоритма Дейкстры показана на рис. 77. Теорема 10.2. Алгоритм Дейкстры имеет сложность 0{п2). Доказательство. Пусть найдены расстояния до к ближайших к s вершин. Определение расстояния до (£+1)-й вершины требует в строке 7 числа операций пропорционального (п — к),
246 Глава 10. Пути в сетях к 1 2 3 4 5 S = V\F {1=8} {1,4} {1,4,2} {1,4,2,6} {1,4,2,6,3} {1,4,2,6,3,5} υ[ι\ 0 D[2) 3 3 D[3] 10 10 7 6 D[4] 1 D[5] oo oo 8 8 8 D[6] СЮ 3 3 2 5 Pwc. 77 так как именно столько вершин находится в множестве F. Проверка условия в строке 9 и, если нужно, пересчет D[v] и Previous[v] в строках 11, 12 требует числа операций пропорционального (п — к). Окончательно, общее число операций в алгоритме Дейкстры пропорционально п + (п — 1) Η 1-1 = = п(п — 1)/2, т. е. равно 0(п2). Ώ Можно дать и другую, графическую интерпретацию работы алгоритма Дейкстры, построив дерево кратчайших путей К. Это дерево является орграфом на том же множестве вершин, что и G. Дуга vw включается в К, если w — ближайшая (к + 1)-я вершина и υ = Previous[w]. Ясно, что К — это корневое дерево с корнем в 5, поэтому для всякой вершины υ € V в К существует единственный (s, г;)-путь. Этот путь является кратчайшим (s, г;)-путем в сети G. Для сети, изображенной ранее на рис. 77, ход построения дерева кратчайших путей показан ниже на рис. 78.
§ /0.4. Случай бесконтурной сети 247 А = 1 А = 2 А = 3 4 4 4 6 2 2 Л«4 A-5 4 6 4 6 • · ►· 2 2 5 Рис. 78 § 10.4. СЛУЧАЙ БЕСКОНТУРНОЙ СЕТИ В этом случае, так же как и в случае сетей с неотрицательными весами дуг, известен более эффективный алгоритм вычисления расстояний от фиксированной вершины до всех остальных, чем алгоритм Форда-Беллмана. В основе этого алгоритма лежат следующие две леммы. Лемма 1. В каждом бесконтурном орграфе имеется хотя бы одна вершина, полустепень исхода которой равна нулю. Доказательство. Пусть G = (V, Е) — бесконтурный орграф и w\ — произвольная его вершина. Если ее полустепень исхода не равна нулю, то выберем произвольную вершину w<i такую, что w\W2 € Ε, затем w$ так, что г^гиз € Е, и т. д. до тех пор, пока подобный выбор вершины возможен. Через конечное число шагов мы дойдем до некоторой вершины w, из которой не выходит ни одна дуга, ибо в бесконтурном орграфе вершины в строящемся пути w\,W2,w$,..., не могут повторяться. Следовательно, последняя построенная в пути вершина w имеет нулевую полустепень исхода. D
248 Глава 10. Пути в сетях Лемма 2. Вершины бесконтурного ориентированного графа можно перенумеровать так, что каждая дуга идет из вершины с меньшим номером в вершину с большим номером. (Орграфы с так пронумерованными вершинами иногда называют топологически отсортированными, а алгоритм, осуществляющий такую нумерацию вершин, — алгоритмом топологической сортировки вершин.) Доказательство. Приведем алгоритм, осуществляющий топологическую сортировку. Неформально этот алгоритм можно сформулировать следующим образом: 1) объявить наибольшим неиспользованным номером число, равное количеству вершин в орграфе; 2) выбрать произвольную вершину υ, полустепень исхода которой равна нулю, и присвоить вершине ν наибольший из еще не использованных номеров. Номер, который получит вершина υ, считать использованным; 3) удалить из орграфа вершину ν вместе со всеми входящими в нее дугами; 4) повторять шаги 2 и 3 до тех пор, пока все вершины не получат свой номер. Корректность работы приведенного алгоритма топологической сортировки вытекает из леммы 1, так как при каждом удалении вершины новый граф остается бесконтурным и, следовательно, в нем также существует вершина с нулевой полустепенью исхода. D При формальном описании этого алгоритма переменная number дает значение самого большого из еще не использованных номеров. Переменная DegOut[v] указывает на текущее значение полустепени исхода вершины υ. В частности, удаление вершины ν вместе со всеми выходящими из нее дугами приводит к уменьшению значения DegOut[w] на единицу для всех w e list[v]. Очередь Q служит для накопления текущего множества вершин, имеющих нулевую полустепень исхода. Массив Index предназначен для хранения новых номеров вершин. В этом разделе нам будет удобнее считать, что
§ 10 А. Случай бесконтурной сети 249 все сети и орграфы заданы списками смежностей list[v]% где w e list[v], если и только если имеется дуга из w в v. Алгоритм 10.3 Вход: бесконтурный орграф G = (V,E), заданный списками смежностей list[v]. Выход: массив Index длины η такой, что для любой дуги vw € Ε справедливо неравенство Index[v] < Index[w]. 1. begin 2. for v e V do DegOut[v] := 0; 3. for υ e V dy 4. for w e list[v] do DegOut[w] := DegOut[w] + 1; 5. Q := nil; number := n; 6. for ν e V do 7. if DegOut[v] = 0 then Q <= v\\ 8. while Q φ nil do 9. begin 10. ν <= Q; Index[v] := number; 11. number := number — 1; 12. for w e list[v] do 13. begin 14. DegOut[w] := DegOut[w] - 1; 15. if DegOut[w] = 0 then Q <= v\ 16. end 17. end 18. end. В алгоритме 10.3 в цикле в строках 3 и 4 вычисляется полустепень исхода каждой вершины. Затем все вершины с нулевой полустепенью исхода помещаются в очередь Q (цикл 6-7). В строках 10 и 11 очередной вершине присваивается наибольший из неиспользованных номеров, иначе говоря, реализуется шаг 2 неформального описания алгоритма. Цикл в строках 12-15 обеспечивает удаление последней пронумерованной вершины вместе с дугами ей инцидентными, и все вершины, полустепень исхода которых в новом орграфе равна нулю, сразу же помещаются в очередь Q (шаг 3 неформального описания).
250 Глава 10. Пути в сетях Легко видеть, что каждая вершина помещается в очередь Q тогда, когда ее полустепень исхода в заданном орграфе равна нулю, либо тогда, когда все вершины, следующие за ней, получат свои новые номера. Поэтому алгоритм 10.3 правильно осуществляет топологическую сортировку вершин. Теорема 10.3. Алгоритм 10.3 имеет сложность 0(т). Доказательство. Напомним, что на протяжении этой главы мы условились считать, что η ^ т. Циклы в строках 2 и 6-7 анализируют каждую вершину ровно по одному разу, а в строках 3-4 и 12-15 — каждую дугу также ровно по одному разу. Следовательно, сложность алгоритма 10.3 есть 0(п) 4- + 0{т)=0{т). П В тех случаях, когда бесконтурный орграф задан списками смежностей Usi, топологическая сортировка вершин орграфа также может быть осуществлена за время 0(т). При описании алгоритма вычисления расстояний в бесконтурной сети будем считать, что все вершины заданной сети топологически отсортированы. Расстояния будем вычислять от вершины v\ = s. Пусть Vk — произвольная вершина заданной бесконтурной сети. Тогда любой (s^v^-nyTh проходит через вершины с меньшими чем А: номерами. Из этого замечания следует, что для вычисления расстояний от s до всех остальных вершин сети достаточно последовательно вычислять расстояния от s до г>2, затем от s до υ$ и т.д. Пусть, как и в предыдущих разделах, d(y) обозначает расстояние от s до v. Тогда d{v\) = О, и если d(vr) для всех г < к вычислено, то d(vk) = mm{d(vr) + фг, vk)\r = 1,2,..., к). (10.2) Корректность формулы (10.2) легко проверяется при помощи индукции. Именно по этой формуле вычисляет расстояния от вершины s = ν\ предлагаемый ниже алгоритм, в котором переменные D[v] и Previous[v] имеют тот же смысл, что и в алгоритмах Форда-Беллмана и Дейкстры.
§ /0.4. Случай бесконтурной сети 251 Алгоритм 10.4 (* Вычисление расстояний от вершины v\ в бесконтурной сети *) Вход: бесконтурная сеть G = (V, Е, с) с топологически отсортированными вершинами, заданная списками list[v]. Выход: расстояния D[v] от v\ до всех ν € V, Previous[v] — предпоследняя вершина в кратчайшем (у\1у)-пути. 1. begin 2. D[v\] := 0; Previous[v\) := 0; 3. for k := 2 to η do D[vk] := oo; 4. for fc := 2 to η do 5. for w e list[vk] do 6. if D[w] + c(w, Vk) < D[vk] then 7. begin 8. D[vk]:=D[w] + c(w,vk)\ 9. Previous [vk] := гу; 10. end 11. end. Теорема 10.4. Алгоритм 10.4 имеет сложность 0(т). Доказательство. Цикл в строке 3 требует η операций присваивания. Цикл в строках 4-10 приводит к тому, что каждая дуга сети анализируется ровно один раз и каждый анализ дуги приводит к выполнению числа операций, ограниченного константой в строках 6-9. Следовательно, сложность алгоритма 10.4 есть 0(п) + 0(т) = 0(т). D Работа алгоритма 10.4 показана на рис. 79. к~ 2 3 4 5 6 D[vi] 0 D[v2] oo 4 D[v3] oo oo 11 D[v4] oo oo oo 3 D[vb] oo oo oo oo 8 £>Ы oo oo oo oo oo -3 !
252 Глава 10. Пути в сетях В случае задания бесконтурной сети списками list расстояния от v\ до всех остальных вершин также могут быть вычислены за время 0{т). Такой алгоритм получается легкой модификацией алгоритма 10.4. Предоставляем читателям возможность самостоятельно подправить алгоритм 10.4 для достижения указанной цели. В заключение отметим, что все три основных алгоритма (Форда-Беллмана, Дейкстры и алгоритм 10.4) вычисления расстояний от фиксированной вершины легко могут быть модифицированы для вычисления расстояний от фиксированной вершины в сетях с взвешенными вершинами. § 10.5. ЗАДАЧА О МАКСИМАЛЬНОМ ПУТИ И СЕТЕВЫЕ ГРАФИКИ Задача о максимальном пути формулируется следующим образом: в заданной сети G = (V, Е, с) с выделенной вершиной s для каждой вершины υ GV найти (s,v)-nyTb, имеющий максимальную длину среди всех возможных (в,г;)-путей в сети G. Отметим, что имеет смысл решать эту задачу лишь в сетях, не содержащих контуров положительной длины. Рассмотрев тогда сеть, отличающуюся от исходной только изменением знаков весов дуг, получим сеть, в которой нет контуров отрицательной длины. Применяя к новой сети алгоритм Форда- Беллмана, можно построить кратчайшие (s,v)-nyTH, которые будут путями максимальной длины в исходной сети. Впрочем, задачу о максимальном пути в общем случае можно решать и непосредственно, заменяя в алгоритме
§ 10.5. Задача о максимальном пути и сетевые графики 253 Форда-Беллмана знак неравенства в строке 9 на противоположный. Разумеется, решая таким образом задачу о максимальном пути, вес несуществующих дуг следует положить равным — 00. Важный частный случай сети с неотрицательными весами дуг, не имеющей контуров положительной длины, — это сеть с неотрицательными весами дуг, в которой вообще нет контуров. В этом частном случае задача о максимальном пути может быть решена алгоритмом 10.4, в котором -foo заменяется на —оо, а знак неравенства в строке 6 меняется на противоположный. Несложное доказательство корректности исправленного таким образом алгоритма 10.4 мы предоставляем читателю. Отметим, что подобная замена знака неравенства в алгоритме Дейкстры не позволяет получить алгоритм решения задачи о максимальном пути. Для примера достаточно рассмотреть сеть, изображенную на рис. 80. Здесь такая модификация алгоритма Дейкстры неправильно определит путь максимальной длины от вершины s до вершины 2. А (3) Рис. 80 Итак, алгоритм Форда-Беллмана и алгоритм 10.4 легко могут быть модифицированы для вычисления длин максимальных (s,v)-nyrevi. Сами же пути с помощью меток Previous[v] строятся так же, как и в алгоритме Форда- Беллмана. Задача о максимальном пути в бесконтурной сети имеет большое практическое значение. Она является важнейшим звеном в методах сетевого планирования работ по осуществлению проектов.
254 Глава 10. Пути в сетях Многие крупные проекты, такие как строительство дома, изготовление станка, разработка автоматизированной системы бухгалтерского учета и т.д., можно разбить на большое количество различных операций (работ). Некоторые из этих операций могут выполняться одновременно, другие — только последовательно: одна операция после окончания другой. Например, при строительстве дома можно совместить по времени внутренние отделочные работы и работы по благоустройству территории, однако возводить стены можно только после того, как будет готов фундамент. Задачи планирования работ по осуществлению заданного проекта состоят в определении времени возможного окончания как всего проекта в целом, так и отдельных работ, образующих проект; в определении резервов времени для выполнения отдельных работ; в определении критических работ, т. е. таких работ, задержка в выполнении которых ведет к задержке выполнения всего проекта в целом; в управлении ресурсами, если таковые имеются, и т. п. Здесь мы разберем основные моменты одного из методов сетевого планирования, называемого методом критического пути. Метод был разработан в конце 1950-х годов Дюпоном и Ремингтоном Рандом для управления работой химических заводов фирмы «Дюпон де Немур» (США). Пусть некоторый проект W состоит из работ υ\,..., νη\ для каждой работы Vk известно (или может быть достаточно точно оценено) время ее выполнения tm{vk). Кроме того, для каждой работы Vk известен, возможно пустой, список Pred(vk) работ, непосредственно предшествующих выполнению работы г;*;. Иначе говоря, работу Vk можно выполнять только после завершения всех работ, входящих в этот список. Для удобства, в список работ проекта W добавим две фиктивные работы s и £, где работа s обозначает начало всего проекта W, а работа t — завершение работ по проекту W. При этом будем считать, что работа s предшествует всем тем работам ν G W% для которых список Pred(v) пуст, иначе говоря, для всех таких работ ν положим Pred(v) = {s}. Положим далее Pred(s) = 0, Pred(t) = {vG W\v не входит ни в один список Pred(w)}} т.е. считаем, что работе t предшествуют все те
§ 10.5. Задача о максимальном пути и сетевые графики 255 работы, которые могут быть выполнены самыми последними. Время выполнения работ s и t естественно положить равными нулю: tm(s) = tm(t) = 0. Весь проект W теперь удобно представить в виде сети G = = (V,E,c), где сеть G = (V,E,c) определим по правилам: 1) V = W, т. е. множеством вершин объявим множество работ; 2) Ε = {vw\v € Pred(w)}, т.е. отношение предшествования задает дуги в сети; 3) c(v,w) = tm(w). Так построенную сеть G часто называют сетевым графиком выполнения работ по проекту W. Легко видеть, что списки смежностей этой сети list[v] совпадают с заданными для проекта списками предшествующих работ Pred(v). Понятно, что сетевой график любого проекта не может содержать контуров. Отсутствие контуров в сети G позволяет пронумеровать работы проекта W таким.образом, чтобы для каждой дуги ij сети G выполнялось условие г < j. Поэтому в дальнейшем будем считать, что вершины в сети G топологически отсортированы. На рис. 81 приведен пример проекта строительства дома и соответствующий сетевой график. п/п 1 2 з ! 4 ! 5 6 7 Наименование работы Закладка фундамента Возведение коробки здания Монтаж электропроводки Сантехмонтаж Настил крыши Отделочные работы Благоустройство территории Предшествующие работы Нет 1 2 2 2 3,4 5 Время выполнения 4 8 2 3 4 5 2 Конечной целью построения сетевой модели является получение информации о возможных сроках выполнения как
256 Глава 10. Пути в сетях 3 (5) 6 Рис. 81 отдельных работ, так и о возможном сроке выполнения всего проекта в целом. Обозначим через efin(v) (соответственно ebeg(v)) наиболее ранний возможный срок выполнения работы υ (соответственно наиболее ранний возможный срок начала работы υ). Удобно считать, что efin(s) = ebeg(s) = 0. Поскольку начать выполнять работу ν можно только после того, как будут выполнены все работы, предшествующие данной работе ν, то получим следующие формулы для расчета значений ebeg(v) и efin(v) : ebeg(v) = max(efin(w)\w Ε Pred(v)), efin(v) = ebeg(v) + tm(v). Легко видеть, что значение efin(v) равно длине максимального (в,г;)-пути в сети G. Поэтому, для вычисления значений efin(v) можно использовать алгоритм вычисления длин минимальных путей в бесконтурной сети, в котором все знаки неравенств заменены на противоположные. При этом значение efin(t) дает наиболее ранний возможный срок завершения всего проекта в целом. Ради полноты приведем здесь формальную запись алгоритма, непосредственно вычисляющего характеристики ebeg и efin. Алгоритм 10.5 (* Расчет наиболее ранних возможных сроков начала и выполнения работ *) Вход: сетевой график G работ V, заданный списками Pred(v), v£V.
§ 10.5. Задача о максимальном пути и сетевые графики 257 Выход: наиболее ранние возможные сроки начала и выполнения работ ebeg[v], efin[v],v € V. 1. begin 2. for k := 0 to η -f 1 do ebeg[k] := efin[k] := 0; 3. for k := 1 to η 4-1 do 4. begin 5. for г € Pred(k) do 6. ebeg[k] := max(efin[i], ebeg[k])\ 7. e/m[fc] := ebeg[k] 4- tm[fc]; 8. end 9. end. В этом алгоритме вершины сетевого графика s и t обозначены соответственно через 0 и η 4-1. Значения efin(v) и ebeg(v) для сетевого графика, изображенного на рис. 81, приведены в табл. 1. Из найденных значений следует, что этот проект не может быть завершен раньше чем через 20 единиц времени. Пусть Τ — плановый срок выполнения проекта W. Ясно, что Τ должно удовлетворять неравенству efin(n 4-1) < Т. Через lfin(v) (соответственно lbeg(v)) обозначим наиболее поздний допустимый срок выполнения (начала) работы ν, т. е. такой срок, который не увеличивает срок Τ реализации всего проекта. Например, для работы 3 сетевого графика из рис. 81 имеем ebeg(3) = 12, e/m(3) = 14, но ясно, что начать работу 3 можно на единицу времени позже, поскольку это не повлияет на срок выполнения всего проекта, а вот задержка в реализации этой же работы на 2 единицы приведет к увеличению срока выполнения всего проекта на 1 единицу времени. Непосредственно из определений получаем справедливость равенств lbeg(n 4-1) = lfin(n 4-1) = Т. Поскольку произвольная работа ν должна быть завершена до начала всех наиболее поздних допустимых сроков тех работ w, которым предшествует работа ν, то получаем следующие формулы: lfin(v) = min{lbeg(w)\v G Pred(w)}, lbeg(v) = lfin(v) — tm(v).
258 Глава tO. Пути в сетях Вычислить значения lfin(v) и lbeg(v) можно, двигаясь по вершинам сети G от n-fl к 0. Все детали вычисления названных характеристик приведены в алгоритме 10.6. Алгоритм 10.6 (* Расчет наиболее поздних сроков начала и окончания работ *) Вход: сетевой график G работ V, заданный списками Pred[v], υ € V, плановый срок окончания проекта — Т. Выход: наиболее поздние допустимые сроки выполнения и начала работ lfin[v] и lbeg[v]. 1. begin 2. for v G V do lfin[v] := Γ; 3. for к := η 4-1 downto 1 do 4. begin 5. lbeg[k] := lfin[k] — tm(k)\ 6. for г G Pred(v) do 7. lfin[i] := min(lfin[i]Jbeg[k])] 8. end 9. end. Найденные значения возможных и допустимых сроков выполнения работ позволяют определить резервы времени для выполнения той или иной работы. В сетевом планировании рассматривают несколько различных и по-своему важных видов резерва работ. Мы здесь ограничимся лишь полным резервом (иногда его называют суммарным) времени выполнения работ. Он определяется по формуле reserve(v) = lbeg(v) — ebeg(v). Значение reserve(v) равно максимальной задержке в выполнении работы υ, не влияющей на плановый срок Т. Понятно, что справедливо и такое равенство reserve(v) = lfin(v) — efin(v). Работы, имеющие нулевой резерв времени, называются критическими. Через каждую такую работу проходит некоторый максимальный (s,£)-nyTb в сети G. Поэтому такой метод
§ 10.6 Задача о maxmin-nymu 259 нахождения критических работ и называют методом критического пути. Критические работы характеризуются тем, что любая задержка в их выполнении автоматически ведет к увеличению времени выполнения всего проекта. Численные значения введенных характеристик сетевых графиков для проекта из рис. 81 даны в табл. 1. Расчеты выполнены при Τ = 20. Критическими работами этого проекта являются работы с номерами 0,1,2,4,6,8, которые и образуют в сети G критический путь. Работы ! 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 Ibeg 0 0 4 13 12 14 15 18 20 lfin 0 4 12 15 15 18 20 20 20 reserve 0 0 0 1 0 2 0 2 о Исследование сетевых графиков на этом мы завершим. Отметим только, что, помимо рассмотренных нами характеристик, часто рассматривают и большое число других, связанных, например, с неопределенностью во времени выполнения работ, с управлением ресурсами и т. д. Достаточно обширный и содержательный материал по этому поводу можно найти в книге [56]. § 10.6. ЗАДАЧА О MAXMIN-ПУТИ Пусть G = (V,Eyc) — сеть. Для произвольного (в,г;)-пути Ρ : s = υο, νι, - - ·, Vk = ν положим т(Р) = mm{c(vi-\,Vi)\i = 1,2,..., Α:}. Число т(Р) назовем весом пути Р.
260 Глава 10. Пути в сетях Задача о maxmin-nymu формулируется следующим образом: среди всех (в,г;)-путей в сети G найти путь максимального веса. Иногда эту задачу называют задачей об узких местах. Для иллюстрации разберем следующий пример. Рассмотрим дорожную сеть, включающую мосты. Будем считать," что превышение грузоподъемности некоторого моста при перевозке груза приводит к разрушению данного моста. Допустим, что мы хотим определить максимальный вес груза, который может быть транспортирован в рассматриваемой дорожной сети из пункта s в пункт υ без превышения грузоподъемности находящихся на пути движения транспорта мостов. Для решения этой задачи построим сеть G = (V,E,c), множеством вершин которой объявим пункты s и υ, а также все перекрестки дорожной сети. Будем говорить, что дорога х, соединяющая перекрестки w и и, непосредственно их соединяет, если χ не проходит через другие перекрестки. Для дороги χ положим с(х) равным минимальной из грузоподъемностей мостов, находящихся на дороге х\ если дорога χ мостов не содержит, то считаем, что с(х) = оо. Будем считать, что две вершины w и и сети G соединены дугами (wyu) и (u,w), если есть хоть одна дорога х, непосредственно соединяющая перекрестки w и и. Положим с(щ w) = c(wy и) = = тах{с(х)\х непосредственно соединяет w и и}. Аналогично определяются дуги, инцидентные пунктам s и v. Будем считать, что из s дуги только исходят (т. е. исключим дуги вида (ii;,s), где w £ У), а в υ дуги только входят. На рис. 82а дан пример дорожной сети, соединяющей пункты s и υ: цифрами обозначены перекрестки, буквами — мосты, а числа в скобках означают грузоподъемность соответствующего моста. Соответствующая сетевая модель приведена на рис. 826, где каждое неориентированное ребро вида г, j соответствует двум дугам (i,j) и (j, г). Обращаем внимание читателя на вес дуги (3,υ), который равен 80, ибо пункты 3
§ 10.6 Задача о maxmin-nymu 261 и υ соединяют две дороги χ и у, для которых с(х) = 80 и с(у) = 60. Поэтому c{3,v) = 80. 1 6(50) 3 α(100) 2 d(80) 100 2 80 Рис. £2 Для решения задачи о maxmin-пути в произвольной сети G = (V,Eyc) с не обязательно неотрицательными весами мы лишь немного модифицируем изложенный ранее алгоритм Дейкстры. Принцип «жадности» в вычислении maxmin- расстояний выглядит здесь следующим образом: вычисляем последовательно каждый раз maxmin-расстояние до наиболее далекой вершины от s среди всех тех вершин, до которых maxmin-расстояние еще не вычислено. Более точно наши рассуждения здесь таковы. Обозначим через dm(v) максимальный вес среди всех (s,v)-nyTen, т.е. maxmin-расстояние от s до υ. Положим S = {s} и dm(s) = +оо. Будем теперь добавлять к множеству S по одной вершине так, что множество S состоит на каждом шаге из тех вершин υ, для которых dm(v) вычислено, и для всех ν € S и w Ε € F, где F = V \ 5, справедливо неравенство dm(v) ^ dm(w). Для каждого w e F положим D(w) = max{mm{dm(v),c(v,w)}\v Ε 5}.
262 Глава 10. Пути в сетях Понятно, что в этой формуле появляется максимум вместо минимума в аналогичной формуле (10.1) из разд. 10.2, ибо нас интересует путь максимального веса. Очередная вершина ги*, которую следует добавить к 5, выбирается в соответствии с условием D(w*) = max{D{w)\w Ε F}. Обоснование корректности такой модификации алгоритма Дейкстры проводится аналогично доказательству корректности самого алгоритма Дейкстры. Формально можно сказать, что вся модификация заключается в том, что все знаки суммы заменяются на минимумы, а все минимумы в алгоритме Дейкстры — на максимумы. Поэтому мы не будем приводить здесь исправленный указанным способом алгоритм 10.2. S 1 1,2 1,2,3 1,2,3,4 1,2,3,4,5 D[l] +оо D[2] +оо D[3] 100 +оо D[4] — OO 50 90 D[5]' —oo — OO 70 80 2 (50) 4 Ύ (+»)4 /(90) >Sf «*1 (100) 3 (70) 5 Рис. 83 На рис. 83 каждое неориентированное ребро vw представляет собой две ориентированные дуги (υ, w) и (w,v). Читателя не должен смущать тот факт, что веса дуг (1,2) и (2,3) равны -Ьоо. Это обстоятельство означает, что, во-первых, дуги (1,2) и (2,3) имеются в сети и, во-вторых, они имеют бесконечно большой вес. Бесконечно большой вес некоторых дуг
§ 10.7. Задача о кратчайших путях между парами вершин 263 моделирует ситуацию, встречающуюся в задаче о самом надежном пути перевозки груза по дорожной сети. Естественно считать, что дорога, по которой может быть транспортирован груз любого веса, соответствует дуге бесконечно большого веса. При рассмотрении maxmin-задачи веса несуществующих дуг естественно считать равными — оо. Сами пути легко строятся с помощью меток Previous. Отметим только, что такая модификация алгоритма Дейкстры не гарантирует построения минимального по числу дуг наилучшего в смысле maxmin- расстояния пути. Например, в сети из рис. 83 до вершины 5 будет найден путь 1-2-3-4-5, в то время как путь 1-3-4-5 имеет тот же вес. Отметим, что задача о minmax-пути может быть сформулирована и решена аналогично задаче о maxmin- пути. § 10.7. ЗАДАЧА О КРАТЧАЙШИХ ПУТЯХ МЕЖДУ ВСЕМИ ПАРАМИ ВЕРШИН В предыдущих параграфах этой главы рассматривались задачи нахождения оптимальных в том или ином смысле путей от некоторой фиксированной вершины до всех остальных вершин сети. Здесь мы рассмотрим задачу построения кратчайших путей между всеми парами вершин. Под длиной пути, как и в § 10.1-10.4, мы понимаем сумму весов дуг, образующих этот путь. Ясно, что эту задачу можно решать, используя η раз (поочередно для каждой вершины) один из описанных ранее алгоритмов нахождения расстояний от фиксированной вершины. Таким образом, мы получаем алгоритмы сложности 0(п4) (при использовании алгоритма Форда-Беллмана) и 0(п3) для сетей с неотрицательными весами (алгоритм Дейкстры) или для бесконтурных сетей (алгоритм 10.4). Однако для общего случая сетей с произвольными весами имеются более эффективные алгоритмы, чем метод, основанный на многократном применении алгоритма Форда-Беллмана. Один из таких алгоритмов, предложенный в 1962 году Флойдом, мы здесь и разберем. Пусть сеть G = (V, Е, с) задана матрицей весов А, где A[i,j] = c(viyVj)t и A[i,j] = оо, если дуги (yi,Vj) в сети нет.
264 Глава 10. Пути в сетях Обозначим через dk{i,j) длину кратчайшего пути из ν» в Vj, все промежуточные вершины которого содержатся в множестве vi,...,ν*, т.е. содержатся в первых к вершинах. Положим do{i,j) = A[iJ]. Пусть dk{i,j) вычислено при всех i,j = Ι,.,.,η и некотором к^О. Докажем равенство dk+x{ij) = mm{dk(ij),dk(i,k + 1) +dk{k + 1J)). (10.3) Действительно, рассмотрим кратчайший (vi,v,)-nyTb Ρ с промежуточными вершинами из множества νι,.. .,ν*,ν*+ι. Возможны две ситуации: либо вершина Vk+i входит в этот путь, либо нет. Если вершина ν*+ι не входит в путь Р, то, как легко видеть, справедливо равенство dk+i{i,j) = dk(i,j). Если же вершина ν*+ι входит в путь Р, то разбивая этот путь на пути от ν* до Vk+i и от Vk+i до ν*, получаем два новых пути, все промежуточные вершины которых входят во множество vi,...,ν*. Поскольку всякий подпуть кратчайшего пути сам является кратчайшим путем между соответствующими вершинами, то справедливо равенство dfc+i(i,j) = = dk(i, k + l)+dk(k + lyj)), что завершает обоснование равенства (10.3). Равенство (10.3) позволяет легко находить расстояния между всеми парами вершин: нужно последовательно вычислить для всех пар вершин значения do(iyj),di(iyj),..., dn{hj) и учесть, что расстояние от ν* до Vj равно dn(iyj). Для нахождения кратчайших путей будем использовать аналог неоднократно применявшегося ранее массива Previous, а именно заведем двумерный массив Pred размера [l..n, l..n], считая, что Pred[i,j] равен номеру вершины, являющейся предпоследней в кратчайшем (ν*, ^-)-пути (понятно, что последней вершиной в таком пути является вершина Vj). Если к = Pred[i,j], то, посмотрев значение Precf[i,fc], получим следующую вершину в (^-,^)-пути. Таким образом, двигаясь по элементам массива Pred, легко построить путь для любой пары вершин.
§ ΙΟ. 7. Задача о кратчайших путях между парами вершин 265 Детали изложены в приводимом ниже алгоритме, где предполагается, что А[г,г] = 0 и A[i,j] — оо, если дуга (vi,Vj) в сети отсутствует. Еще раз повторим, что неотрицательность весов дуг не предполагается. Однако считается, что в сети нет контуров отрицательной длины. Алгоритм 10.7 (Флойд) (* Вычисление расстояний между всеми парами вершин *) Вход: сеть G = (V,£,c), заданная матрицей весов А порядка п. Выход: расстояния D[i,j] для всех пар Vi.Vj e V, матрица Pred, в которой Pred[i,j] равно номеру предпоследней вершины в кратчайшем (г;г,и,)-пути. 1. begin 2. for г := 1 to n do 3. for j := 1 to η do 4. begin 5. D[i,j] := A[i,j]\ Pred[i,j] := i; 6. end; 7. for k := 1 to η do 8. for г := 1 to η do 9. for j := 1 to η do 10. if D[i, j] > D[i7 k] + D[ky j] then 11. begin 12. D[i,j}:=D[i,k)+D[k,j)· 13. Pred[iJ] := Pred[kJ] 14. end 15. end. Понятно, что сложность алгоритма Флойда определяется сложностью цикла в строках 7-14, который состоит из трех вложенных циклов, выполняемых η раз каждый. Отсюда следует Теорема 10.5. Алгоритм Флойда имеет сложность 0{п3). Здесь интересно отметить, что точно такую же сложность имеет алгоритм Форда-Беллмана вычисления расстояний от фиксированной вершины до всех остальных вершин сети.
266 Глава 10. Пути в сетях В настоящее время не известен ни один алгоритм вычисления расстояния между фиксированной парой вершин, который был бы существенно эффективнее (т. е. имел бы меньшую вычислительную сложность), чем алгоритм вычисления расстояний между всеми парами вершин. Формальное описание процедуры построения самих кратчайших путей, использующее матрицу Pred, не составляет никаких трудностей, и мы предоставляем его читателям в качестве несложного упражнения для самостоятельной работы.
Глава 11 ЗАДАЧА О МАКСИМАЛЬНОМ ПОТОКЕ § 11.1. ОСНОВНЫЕ ПОНЯТИЯ И РЕЗУЛЬТАТЫ В этой главе мы будем рассматривать сети G = (V,E,c), имеющие единственную вершину s с нулевой степенью захода и единственную вершину t с нулевой степенью исхода. Вершину s будем называть источником, а вершину t — стоком сети G. Будем предполагать также, что веса с(е) всех дуг неотрицательны. Число с(е) будем называть пропускной способностью дуги е. Для удобства введем следующие обозначения. Для произвольной вершины ν через υ+ (соответственно υ—) будем обозначать множество вершин, к которым (из которых) идут дуги из вершины (в вершину) υ. Потоком f в сети G называется функция / : Ε -> R, удовлетворяющая условиям: 1)0^ /(e) ^ с(е) для всех е Ε Е\ 2) f{v-) = /(v+) Для всех υ Ε V, υ φ s,v φ ty где f(v-) = = Σ f{w,v),f(v+)= Σ f{v,w). w£v— w£v+ Число f{vyw) можно интерпретировать, например, как количество жидкости, поступающей из υ в w по дуге (v, w). С этой точки зрения значение f{v—) может быть интерпретировано как поток, втекающий в вершину г;, a f{v+) — вытекающий из v. Условие 1) называется условием ограничения по пропускной способности, а условие 2) — условием сохранения потока в вершинах; иными словами, поток, втекающий в вершину υ, отличную от s и t, равен вытекающему из нее потоку.
268 Глава П. Задача о максимальном потоке Положим II/H = f{s+). Число ||/|| называется величиной потока /. Поток / называется максимальным, если для любого потока /* справедливо неравенство ||/*|| ^ ||/||. Задача о максимальном потоке: в заданной сети найти поток максимальной величины. Такая задача возникает, например, когда требуется найти максимально возможный объем некоторой жидкости или газа, который может быть перекачан по сети трубопроводов от источника до пункта потребления. При этом условие 1) в определении потока моделирует тот факт, что по каждой трубе может протекать ограниченное количество жидкости, обусловленное, например, диаметром трубы, а условие 2) — то, что потерь в промежуточных вершинах не происходит. Понятие потока в сети может моделировать также потоки транспорта в сети автострад, перевозку товаров по железным дорогам и т. п. 2 0,5(1) 5 0(1) 3 0(1) 4 0,5(1) Рис. 84 На рис. 84 дан пример сети G и потока / в ней. Значение /(e) на дуге е указано возле соответствующей дуги, в скобках указана пропускная способность этой же дуги. Очевидно, величина этого потока равна 1. Задача о максимальном потоке имеет одну особенность, отличающую ее от всех рассмотренных ранее задач дискретной оптимизации. А именно во всех предшествующих задачах искомый объект существовал очевидным образом и в принципе мог быть найден полным перебором. Например, можно было бы перебрать все пути между заданными вершинами и выбрать среди них кратчайший или перебрать все остовы и выбрать минимальный. В задаче о максимальном потоке полный перебор принципиально невозможен и существование
§ 11.1. Основные понятия и результаты 269 максимального потока, вообще говоря, не очевидно. Тем не менее справедлива следующая Теорема 11.1. В каждой сети существует максимальный поток. Доказательство. Пусть G = (V,E,c) — сеть, s и t — соответственно источник и сток сети G. Занумеруем произвольным образом множество дуг Ε сети G. Тогда каждый поток / в сети G — это просто упорядоченный набор из т чисел, т.е. точка m-мерного евклидова пространства Rm, где т — число дуг в сети. Иначе говоря, пусть X — множество всех потоков в сети G. Тогда имеется естественное инъективное отображение φ множества X в Rm. Пусть Υ = ф{Х). В силу условия 1) определения потока множество Υ ограничено, так как содержится в т-мерном параллелепипеде n£Li[0>c(ei)]· Докажем замкнутость множества Y. Рассмотрим предельную точку у = (yi,...,ут) множества Υ и покажем, что существует поток / в сети G такой, что /(е*) = у< для любого г = 1,... , т. Достаточно проверить, что для отображения, заданного равенством /(е*) = yit выполняются оба условия 1) и 2) из определения потока. Пусть Д — последовательность потоков в сети G такая, что для каждого г = 1,...,т последовательность fk{ei) сходится к yi. Поскольку неравенства О < fk(ei) ^ с(вг) выполняются при любом fc, то, переходя к пределу, получаем неравенства 0 ^ yi ^ с(е{). Итак, условие 1) выполняется. Пусть теперь υ произвольная вершина сети. Обозначим через /— и /+ множества индексов дуг, входящих (соответственно выходящих) в вершину ν (из вершины υ). Тогда для любого к справедливо равенство Σ /*(*) = Σ λ(«ο· Переходя в этом равенстве к пределу, получим Σ /(*) = Σ /(β<)· i€l- i€/+
270 Глава //. Задача о максимальном потоке Тем самым замкнутость множества Yt а вместе с ней и компактность этого множества доказаны. Вещественная функция ||у|| = Y^i€Syi(y € Υ), где S — множество индексов дуг, выходящих из источника s, является, как нетрудно заметить, линейной функцией. Отсюда вытекает ее непрерывность. Следовательно, по теореме Вейерштрасса данная функция имеет максимум. Поскольку эта функция дает величину потока, точка, в которой она имеет максимум, является максимальным потоком в сети G. D Разрезом между заданными вершинами ν и w в ориентированном графе обычно называют минимальное множество дуг, удаление которых из орграфа приводит к разрушению всех (υ, гу)-путей. Этому понятию можно придать двойственную формулировку в терминах множеств вершин. В этой главе нам удобнее оперировать именно такой трактовкой понятия разреза. Более точно, (s,t)-pa3pe30M (в дальнейшем просто разрезом) {Vs,Vt) в сети G называется пара множеств V8yVt, удовлетворяющих условиям: a) sG Vs,te Vt\ h)Va\JVt = V\ с) V,nVt = 0. Для разреза (VsyVt) через E(VS —► Vt) обозначим множество всех дуг е, начала которых лежат в Vs, а концы — в Vt. Аналогично, E{Vt -> V8) = {e = vwe E\v eVuwG V8}. Например, для сети из рис. 84 и разреза (14, V*), в котором Vs = {5,4}, a Vt = {2,3,5,*}, имеем E{VS -> Vt) = = {(*, 2), (s, 3), (4, *)}, ВД -> V.) = {(2,4), (3,4)}. Пусть f(Vs -> Vt) = Σ /(e), e£E(V3-+Vt) № ^Vs)= ]T /(e). e£E(Vt-*Va)
§ 11.1. Основные понятия и результаты 271 Лемма 1. Для любого потока / и любого разреза (Vs, Vt) справедливо равенство 11/11 = № -> Ц) - /(vt -> v.). Доказательство. Для произвольной вершины υ Ε V9, где ν Φ s, справедливы равенства f{v+) - f{v-) = 0 и f(s+) = = ll/ll. Просуммировав эти равенства по всем вершинам υ Ε Ε Vs, получим ш= Ε/и-)-Σ/(«-)· (ил) v€Vs v£Va Пусть е = vw Ε Ε и обе вершины υ и ги принадлежат V^. Тогда значение f{vyw) фигурирует в сумме f{v+) как часть потока, выходящего из υ, и в f{w—) как часть входящего в w потока. Следовательно, в правой части равенства (11.1) все слагаемые вида /(υ, w)y где υ, w Ε Vat взаимно уничтожаются. Оставшиеся слагаемые дают требуемое равенство. D Пусть Vt = {t}nVa = V\ {t}. Тогда f(V8 -> Vt) = f(t-) и /(Vt —> К) = 0. Следовательно, равенство из леммы 1 можно записать следующим образом: 11/11 = /(*-)· Последнее равенство выражает интуитивно понятный факт: поток, входящий в сток, в точности равен выходящему из источника потоку, так как потерь в промежуточных вершинах не происходит. Для разреза (Vs,Vt) положим c{y3,Vt) = £>(е)|е Ε E(VS -> Vt)}. Число c(V3,Vt) называется пропускной способностью разреза. Из условия ограничения по пропускной способности следует, что 0^f(Ve-+Vt)^c{V9,Vt). Отсюда и из леммы 1 получаем
272 Глава //. Задача о максимальном потоке Следствие. Для любого потока / и любого разреза (Vs,Vt) справедливо неравенство ||/|| ^c(VSiVt). Разрез (Vs,Vt) называется минимальным, если для любого разреза (V*, Vt*) справедливо c(V31Vt) ^ с(У/, V*). Лемма 2. Если для некоторого потока /* и некоторого разреза (V*,Vt*) выполняется равенство ||/*|| = c(V*,Vt*)t то поток /* максимален, а разрез (V*, Vf) минимален. Доказательство. Пусть / — максимальный поток, а (VSlVt) — минимальный разрез. Тогда справедлива следующая цепочка неравенств: \\r\\^\\f\\<c(vs,vt)<c(v;,vt*)- Поскольку крайние члены в этой цепочке неравенств совпадают, она превращается в цепочку равенств, что и завершает доказательство леммы. D Цепью из ν в w в сети G называется чередующаяся последовательность попарно различных вершин и дуг vo = = v,eo,vi,...,ejt_i,vjt = wt в которой дуга ег либо выходит из vr и входит в vr+i, либо, наоборот, выходит из vr+\ и входит в vr. В первом случае, когда дуга ег имеет вид vrvr+it она называется прямой дугой цепи, а во втором — обратной. Отметим, что до этого момента понятие цепи рассматривалось только для неориентированных графов. Здесь мы вводим это понятие для ориентированных графов. Можно сказать, что цепь в орграфе — это то же самое, что цепь в неориентированном графе, если игнорировать ориентацию дуг. Пусть Ρ — цепь из ν в w. Для каждой дуги е цепи Ρ положим , , ν _ Г с(е) — /(e), если е — прямая дуга, ^ ' ~~ \ /(e), если е — обратная дуга. Пусть h(P) = min{/i(e)|e Ε Ρ}. Цепь Ρ из s в t называется f-дополняющей, если h(P) > > 0. Например, (s, £)-цепь, включающая вершины s, 3, 4, 2, 5, ty является /-дополняющей для потока / в сети G, изображенного на рис. 84. Причем h(P) = 0,5, дуга (2, 4) является
§ //./. Основные понятия и результаты 273 обратной дугой этой цепи, а остальные дуги — прямыми дугами. Следующий результат является ключевым для построения алгоритма решения задачи о максимальном потоке в сети. Лемма 3. Пусть / — поток в сети G и Ρ — /-дополняющая (з^)-цепь. Тогда в сети G существует поток /* такой, что ||/*|| = \\f\\ + h(P). Доказательство. Определим в сети G функцию /*:£?—> -> R по формуле {/(е) + ft(P), если е Ε Ρ, е — прямая дуга, /(e) - /ι(Ρ), если е Ε Р,е — обратная дуга, /(e), если е £ Р. Докажем, что функция /* неотрицательна и удовлетворяет условиям 1) и 2) определения потока. Пусть е — прямая дуга цепи Р. Используя определения /* и h(P)t получим О ^ /(e) < /*(е) = /(e) + h(P) < /(e) + h(e) = = /(е) + (с(е)-/(е)) = с(е). Итак, для прямых дуг цепи Ρ имеем 0 < /*(е) < с(е). Пусть е — обратная дуга цепи Р. Неравенство /*(е) ^ с(е) очевидно. Докажем, что /*(е) ^ 0. Действительно, Г (е) = /(e) - /i(P) ^ /(e) - /i(e) = /(e) - /(e) = 0. Итак, функция /* удовлетворяет условию 1). Понятно, что условие 2) определения потока следует проверить лишь для вершин vy входящих в цепь Р. Пусть е\ — дуга в цепи Р, по которой пришли в вершину ν, ег — по которой ушли из υ. Каждая из этих дуг может быть как прямой, так и обратной в цепи Р. Следовательно, возможны четыре различных случая. Рассмотрим случай, когда обе дуги е\ и ег прямые. Тогда справедливы равенства />-) = /(«-) + ЦР), /·(«+) = /(и-) + HP),
274 Глава 11. Задача о максимальном потоке так как на обеих дугах е\ и е2 поток увеличивается на одно и то же число h(P). Поскольку для потока / справедливо равенство f{v-) = /(υ+), получаем, что f*(v-) = /*(г;+). В случае когда дуга е\ — прямая, а дуга е2 — обратная в цепи Р, получаем, что обе эти дуги входят в вершину υ. Следовательно, выполняется равенство f*(v—) = /(υ—), ибо на дуге е\ поток увеличится на h(P)t а на дуге е2 уменьшится на Л(Р). Поэтому величина входящего в υ потока не изменится, как не меняется и величина выходящего из ν потока. Оставшиеся случаи (е\ и е2 — обратные дуги и е\ — обратная, а ег — прямая дуга) рассматриваются аналогично. Итак, /* является потоком в сети G. Далее, поскольку цепь Ρ начинается в вершине s и дуга е2 для вершины s имеет вид si; и может быть только прямой дугой в цепи Р, имеем /*(ег) = f(e2) + h(P). На остальных дугах, исходящих из 5, поток не менялся, отсюда ||/*|| = /*(54-) = f(s+) 4- + h(P) = \\f\\ + h(P). D На рис. 85 показан поток /*, полученный для потока / в сети G, изображенной на рис. 84, увеличением вдоль /- дополняющей цепи s — 3 — 4 — 2 — Ъ -t. Величина потока /* равна 1,5. 2 1(1) 5 Объединяет полученные выше результаты Теорема 11.2 (Форд, Фалкерсон. 1956). Для потока f в сети G следующие условия эквивалентны: a) поток f максимален; b) не существует f-дополняющей цепи из s в t; c) существует разрез (VSiVt), для которого ||/|| = = c(Vs,Vt).
§ 11.2. Алгоритм Форда-Фалкерсона 275 Доказательство. Импликации а) =» Ь) и с) ==> а) уже доказаны (леммы 3 и 2 соответственно). Докажем, что Ь) => =>с). Определим Vs как множество всех вершин ν € V, для каждой из которых существует (s,v)-uenb Ρ такая, что Л(Р) > 0. Добавим в V3 вершину s и положим Vt = V \ Vs. Докажем, что для полученного разреза выполняется равенство ||/|| = = c(Vs, Vt). Пусть е = vw и е € Л?(Ув -> Vt). Тогда /(e) = с(е), так как в противном случае условие /(e) < с(е) означало бы, что некоторая ($,г;)-цепь Р, выбранная с условием h(P) > 0, может быть дополнена дугой е и вершиной w до (s, ги)-цепи Q, для которой /i(Q) = min(/i(P),c(e) —/(e)) > 0. Здесь /i(e) = = с(е) — /(e), так как е — прямая дуга в цепи Q. Поскольку w € Vt, то получаем противоречие с построением множества Vs. Следовательно, выполняется равенство f(Vs -> Vt) = = c(Va,Vt). Аналогично, для всех дуг е € £?(Vt —> Va) имеем /(e) = = 0. Следовательно, f(Vt -> V^) = 0. Поскольку (лемма 1) для любого разреза справедливо равенство ||/|| = f(Vs -> Vt) — — /(Vt -> V^), для построенного разреза получаем равенство 11/11 = с(К, vt). π Из теоремы 11.2 и леммы 2 вытекает Следствие. Величина максимального потока в произвольной сети равна пропускной способности минимального разреза. §11.2. АЛГОРИТМ ФОРДА-ФАЛКЕРСОНА Этот алгоритм построения максимального потока основан на идее, подсказываемой леммой 3. Неформально он может быть изложен следующим образом: 1) положить /(e) = 0 для всех дуг е Ε Ε; 2) для текущего потока / искать /-дополняющую (s,£)- цепь; 3) если такая цепь Ρ построена, то для всех прямых дуг е цепи Ρ положить /(e) := /(e) + h(P), а для всех
276 Глава 11. Задача о максимальном потоке обратных — /(e) := /(e) - h(P) (в результате поток / увеличится) и вернуться на шаг 2; 4) иначе СТОП (Поток / максимален в силу теоремы Фор- да-Фалкерсона.)· Однако здесь возникает существенный вопрос. Закончится ли работа этого алгоритма за конечное число шагов? Оказывается, ответ отрицателен. Соответствующий пример такой сети привели Форд и Фалкерсон. В этой сети можно так «злоумышленно» подбирать /-дополняющие цепи, что процесс никогда не кончится; более того, величина каждого потока в течение всего времени будет меньше одной четверти величины максимального потока. My/ Рис. 86 Кроме того, при произвольном выборе /-дополняющей цепи количество итераций увеличения потока может не являться функцией от размерности задачи, т.е. от η и т. В этом можно убедиться на следующем простом примере (рис. 86). Здесь все дуги, кроме дуги (1,2), имеют пропускную способность, равную Му где Μ — достаточно большое целое число, и с(1,2) = 1. Действительно, пусть /0(е) = 0 для всех дуг е. Выберем цепь Ρ : s — 1 — 2 — t. Тогда h(P) = 1 и поток /ь полученный увеличением /о вдоль цепи Р, выглядит следующим образом: /x(S, 1) = /ι(1,2) = /ι (2,*) = l,/i(s,2) = Д(М) = 0. На следующем шаге выберем цепь Р : s — 2 — 1— t, в ней дуга (1,2) является обратной. Снова h(P) = 1, и для нового потока /г получаем /г(1,2) = 0 и /(e) = 1 для всех прочих дуг е. Далее на каждом нечетном шаге выбираем цепь s — 1 — 2 — ty V и
§ П.2. Алгоритм Форда-Фалкерсона 277 а на каждом четном шаге — цепь s — 2 — 1 — t. В результате текущий поток увеличивается каждый раз ровно на единицу. Максимальный поток в этой сети равен 2М, следовательно, понадобится 2М итераций увеличения потока, т.е. число итераций, а вместе с ним и сложность алгоритма, не является функцией размера задачи. Приведенный пример показывает, что необходимо выбирать /-дополняющие цепи специальным образом. Оказывается, что если производить увеличение потока вдоль кратчайших по числу дуг /-дополняющих (з,£)-цепей, то не только можно гарантировать построение максимального потока, но и оценить сверху число итераций. Распространим понятие /-дополняющей ($,£)-цепи и на произвольные (г;,гу)-цепи. Будем говорить, что некоторая (?;,гу)-цепь Ρ является j-ненасыщенной, если h(P) > О, где h(P) = min{/i(e)|e € Ρ} и величина h(e) для каждой дуги е € € Ρ вычисляется как прежде, а именно, h(e) = с(е) — /(e) для прямых дуг и h(e) = /(e) для обратных. Дуги, для которых выполняются равенства h(P) = Л(е), будем называть узкими местами цепи Р. Предположим, что алгоритм Форда-Фалкерсона строит последовательность потоков /о,/ι,...,Λ, Обозначим через dk(y,w) длину (т. е. количество дуг) кратчайшей Д-ненасы- щенной (г;,гу)-цепи. Если такой цепи не существует, то полагаем dk{v,w) = оо. Лемма 1. Для всех вершин ν и для всех к Ε N U {0} выполняются неравенства dk{s,v) ^ 4+1 (s,ν), dk{v,t) ^ dk+\{v,t). Доказательство. Докажем первое неравенство, второе доказывается аналогично. Разумеется, имеет смысл рассматривать только случай, когда существует Д+1-ненасыщенная (з,г;)-цепь. Пусть Ρ : s = νο,βχ,νι,... ,ег,г;г = ν — кратчайшая из таких цепей. Докажем, что для любой дуги е* = Vi-\Vi цепи Ρ выполняется неравенство dfc(*,i/iKdfc(e,i/i-i + l). (11.2)
278 Глава It. Задача о максимальном потоке Пусть дуга в{ используется в цепи Ρ как прямая. Тогда Λ+ΐ(β<) <с{вг). Если fk(ei) < с(вг), то любая Д-ненасыщенная (s,νι-\- цепь может быть продолжена дугой е^ до Д-ненасыщенной (з,г^)-цепи. Тем самым требуемое неравенство (5) выполняется. Если fk(ei) = с(ег), то дуга е; использована как обратная в кратчайшей Д-дополняющей (s,i)-uenn. Поскольку подцепь кратчайшей цепи сама является кратчайшей, получаем равенство dfe(s,Vi_i) = dfc(s,vl-) + l. Отсюда dk(s,Vi) < dk(s,Vi-\), и неравенство (11.2) тем более выполняется. Справедливость неравенства (5) для обратных дуг цепи Ρ проверяется аналогично. Суммируя неравенства (5) и учитывая, что dk{s,vo) = О, получаем cffc(s, vr) < г. Так как dfc+i(s,vr) = г, то dk{s,vr) < <ck+i(s,i;r). D Лемма 2. £слы все изменения потока в алгоритме Форда-Фалкерсона производятся вдоль кратчайших по числу дуг f-дополняющих (з,Ь)-цепей, причем к < I и дуга е используется как прямая (соответственно обратная) в цепи, меняющей поток Д на Д+ь и как обратная (прямая) в цепи, меняющей поток fi на /;+ь то dk(s,t) + 2^di{s,t). Доказательство. Пусть дуга е имеет вид е = vw. Тогда dk{s,w) = dk(s,v) + l, поскольку е используется как прямая дуга при увеличении Д. Ясно, что вершина w следует за г; в кратчайшей Д-дополня- ющей (s,i)-uenn. Далее, di(s, t) = di(s, w) +1 4- di(v, t),
§ ΪΪ.2. Алгоритм Форда-Фалкерсона 279 так как е используется как обратная дуга при увеличении //; понятно, что вершина υ следует за w в кратчайшей /гДопол- няющей ($,£)-цепи. В силу леммы 1 имеем di(s,w) ^ dk(s,w),di(v,t) ^ dk(v,t). Простые вычисления показывают, что di(s,t) =di(s1w) +di{v,t) + \ ^ dk(s,w) + dk(v,t) + 1 ^ ^ dfc(s, v) 4- dfc(v, t) + 2 = d*(s, ί) + 2. Π Теорема 11.3 (Эдмондс и Карп, 1972). Если на каждой итерации алгоритма Форда-Фалкерсона выбирать кратчайшую по числу дуг f-дополняющую (s, £)-цеяь, то построение максимального потока требует не более чем т(п 4- 2)/2 итераций. Доказательство. Заметим, что каждая /-дополняющая (s, £)-цепь содержит хотя бы одну дугу, являющуюся ее узким местом. Оценим, сколько раз каждая дуга может оказаться узким местом. Пусть е = vw — произвольная дуга сети и fkl, Д2,... (Αι < &2 < ...) — последовательность потоков такая, что дуга е используется как прямая дуга при увеличении fk и является узким местом в этот момент. Ясно, что тогда существует последовательность индексов /ι,/2>··· такая, что k\ < l\ < k<i < < h · - -» и дуга е используется как обратная при увеличении потока fi·. По лемме 2 имеем dki(Slt) + 2 ζ d,,(M), d|4(e,t) + 2 < dfci+1(s,i)· Отсюда dfcj(s,£) 4- 4(г — 1) ^ dki(s,t) для всех г. Кроме того, dki(s,t) < η — 1 и dkl(s,t) ^ 1. Поэтому 1 + 4(г — 1) ^ η - 1, т. е. г < (п + 2)/4. Таким образом, произвольная дуга е может быть узким местом в прямом направлении не более чем (п + 2)/4 раз. Аналогично, она может быть узким местом в обратном направлении не более чем (п 4- 2)/4 раз. Поэтому каждая дуга
280 Глава It. Задача о максимальном потоке сети может являться узким местом не более чем (п + 2)/2 раз. Следовательно, общее число увеличений потока, равное числу итераций, не превосходит т(п + 2)/2. D Перейдем к формальному описанию алгоритма Форда- Фалкерсона, в котором ищутся кратчайшие по числу дуг /-дополняющие (з,£)-цепи. Метод, необходимый для построения именно кратчайшей /-дополняющей (s,i)-uenn, нами уже разработан: это поиск в ширину. Разумеется, в стандартную схему поиска в ширину необходимо внести изменения, обусловленные спецификой данной задачи. Поскольку ищется некоторая ($,£)-цепь, то дерево поиска должно иметь в качестве корневой вершины источник s. Естественно считать, что дерево поиска содержит только те вершины сети G, через которые может проходить та или иная /-дополняющая цепь. Такие вершины будем считать помеченными. Осталось сформулировать правила помечивания. Введем массив h[v]. Будем считать, что h[v] = оо, если вершина ν не помечена. Как только вершина ν становится помеченной, то h[v] < оо. Более того, это будет означать, что существует /-ненасыщенная (в,г;)-цепь Р, для которой 0 < h(P) = h[v]. Вершина, из которой помечена вершина vt будет обозначаться через Previous[v]. При каких условиях из уже помеченной вершины w можно пометить вершину ν? Это зависит от типа дуги, соединяющей w и ν (в сети могут одновременно присутствовать как дуга wv, так и дуга vw). Пусть дуга wv € Ε. Пометить ν из w можно, если выполняется условие c(w,v) — f{w,v) > 0. В таком случае переход от w к υ совершается по прямой дуге и метка вершины ν определяется по формуле h[v] = тт(/1[гу],с(гу,г;) - f(w,v)). Если в сети имеется дуга вида vw, т.е. обратная дуга, то помечивание возможно, если f(v,w) > 0. В этом случае метка вершины ν определяется равенством h[v] = min(ft[iy],/(v,iy)).
§ ίί.2. Алгоритм Форда-Фалкерсона 281 Если в сети имеются обе дуги vw, wv и возможно по- мечивание с использованием как той, так и другой дуги, то используем любую из них. Для того чтобы различать, с помощью какой именно дуги, прямой или обратной, помечена вершина υ, введем массив choice[v], считая choice[v] = 1, если вершина υ помечена с помощью прямой дуги, и choice[v] = — 1, если ν помечена с помощью обратной дуги. Если в процессе поиска достигнут сток t, то поиск заканчивается и по меткам Previous легко строится /-дополняющая (s,£)-uenb. Если же поиск закончился, а сток t не достигнут, то /-дополняющей (s, £)-цепи не существует. При формальном описании алгоритма будем предполагать, что сеть G = (ν,Ε,ό) задана матрицей пропускных способностей, где j4[v,iu] = c(v,w) и j4[v,iy] = 0, если дуга vw в сети G отсутствует, а поток / — матрицей F[v,iy], где F[v,w] = = f(v,w). Просмотреть все вершины, смежные с вершиной w можно так: просмотр строки с номером w в матрице А означает просмотр всех дуг, исходящих из wt а просмотр столбца с номером w — всех дуг, входящих в w. Опишем вначале процедуру помечивания вершин в сети G. Эта процедура является модифицированной версией процедуры поиска в ширину. В ней через Q обозначена очередь, в которую заносятся помеченные вершины. 1. procedure Labeling(f)\ 2. begin 3. for ν € V do do h[v] := oo; 4. Q := nil; Q <= s; Previous[s] := nil; 5. while (h[i\ = oo) and (Q φ nil) do 6. begin 7. . w <= Q 8. for ν € V do 9. if (h[v] := oo) and {A[w,v] - F[w,v] > 0) 10. then begin 11. h[v] := min(/i[iy], A[w, v] — F[w, v]); 12. Previous[v] := w\ Q <= v\ choice[v] := 1; 13. end; 14. forvGV\{s} do 15. if (h[v] := oo) and (F[w,v] > 0)
282 Глава //. Задача о максимальном потоке 16. then begin 17. ft[v] := min(ft[«7],F[ti7,v]); Q <= ν; 18. /a£fter[i;] := w\ choice[v] := —1; 19. end; 20. end 21. end. В этой процедуре в основном цикле 5-20 осуществляется поиск в ширину по описанным выше правилам. В цикле 8-13 осуществляется помечивание по прямым дугам, в цикле 14-19 — по обратным. Понятно, что сложность процедуры Labeling(f) определяется сложностью поиска в ширину, т.е. равна 0(п2). Пусть по завершению этой процедуры h[t] < оо. В соответствии с правилами помечивания это означает, что существует /-дополняющая (з,£)-цепь Р, для которой ft(P) = = ft[t], и, следовательно, текущий поток может быть увеличен на величину ft[i]. Саму /-дополняющую цепь легко построить с помощью меток Previous. Одновременно с построением цепи можно увеличить текущий поток /. Детали приведены в алгоритме 11.1. Обращаем внимание читателя на то, что при каждом новом вызове процедуры Labeling все старые метки, расставленные при предыдущем вызове этой же процедуры, исчезают. Алгоритм 11.1 Форд, Фалкерсон Вход: сеть G = (V,£,c), заданная матрицей пропускных способностей л4[1..п,1..п], источник s, сток t. Выход: максимальный поток /, заданный матрицей F порядка п, для которой F[v,w] = f(v,w), У/11 — величина максимального потока. 1. begin 2. for v G V do 3. for w e V do 4. F[v,ti7]:=0; 5. 11/11 :=0; 6. repeat 7. Labeling(f)\ 8. if ft[t] < oo then
§ 11.2. Алгоритм Форда-Фалкерсона 283 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. begin 11/11 := ll/ll + h[t);v:=t; while υ Φ s do begin w := Previous[v]\ if choice[v] = 1 then F[w,v] := F[w,v] + h[t] else F[v,w] := F[v,w] - h[t}\ ν := w end end until h[t] = oo; end. Теорема 11.4. Алгоритм 11.1 имеет сложность 0(пъ). Доказательство. Действительно, основной цикл в строках 6-20 по теореме 11.3 проработает не более т(п + 2)/2 = = п2(п + 2)/2 = 0(п3) раз. Каждый проход цикла 6-20 содержит вызов процедуры Labeling, сложность которой такая же, как и поиска в ширину в графе, заданном матрицей смежно- стей, т.е. 0(п2). Отсюда получаем, что алгоритм 11.1 имеет сложность 0(п5). Ώ Заметим, что если сеть G = (У,Я, с) задана списками смежностей Ust[v] и list[v], то, внося очевидные изменения в процедуру Labeling(f), легко получить алгоритм сложности 0(гп2п), что иногда лучше, чем 0{пъ). Для иллюстрации работы алгоритма 11.1 вновь рассмотрим сеть, изображенную ранее на рис. 84. Будем считать, что вершины просматриваются в порядке возрастания номеров. После первого вызова процедуры Labeling(f) будет найдена /-дополняющая цепь s — 2 — 4 - £, ибо вершина 2 была помечена раньше, чем вершина 3, а потому вершина 4 будет помечена из вершины 2. Ясно, что h[t] = 1. Следовательно, новый поток / будет таким: /(s,2) = /(2,4) = /(4, t) = 1 и /(e) = 0 для всех прочих дуг е сети G.
284 Глава //. Задача о максимальном потоке Второе обращение к процедуре Labeling(f) определит /-дополняющую цепь s-3-4-2-5 — t,h[t] = 1. Для этой цепи дуга (2,4) является обратной. Новый поток становится таким: /(2,4) = 0 и /(e) = 1 на всех остальных дугах. Понятно, что следующий вызов процедуры Labeling(f) не находит /-дополняющей (з,£)-цепи. Поток, полученный на второй итерации, является максимальным. В заключение отметим очевидное, но важное свойство алгоритма Форда-Фалкерсона. Теорема 11.5. Если пропускные способности всех дуг являются целыми числами, то как максимальный поток, так и все промежуточные потоки в алгоритме Форда- Фалкерсона, являются целочисленными. Заметим также, что в настоящее время известны алгоритмы построения максимального потока, имеющие меньшую вычислительную сложность, чем алгоритм Форда-Фалкерсона. Один из них — алгоритм Малхотры, Кумара и Махешвари сложности 0(п3) подробно разобран в [37].
Глава 12 ПЛРОСОЧЕТЛНИЯ В ДВУДОЛЬНЫХ ГРАФАХ § 12.1. ОСНОВНЫЕ ПОНЯТИЯ Паросочетанием в графе называется произвольное множество его ребер такое, что каждая вершина графа инцидентна не более чем одному ребру из этого множества. Рассматривая различные задачи о паросочетаниях, мы ограничимся случаем двудольных графов. Для решения аналогичных задач в произвольных графах используются те же идеи, что и в случае двудольных, только существенно усложняется их реализация. Напомним, что граф G = {V,E) называется двудольным, если множество его вершин V можно разбить на непересекающиеся множества X и Υ такие, что каждое ребро е Ε Ε имеет вид е = ху> где χ Ε X и у G Υ. Двудольный граф будем обозначать либо (Χ, Ε,Υ), если граф не является взвешенным, либо (Х,£,с,У), если ребрам е Ε Ε приписаны веса с(е). Всюду в дальнейшем, говоря о двудольном графе, мы предполагаем, что разбиение множества V на подмножества X и Υ зафиксировано. Самые разные практические задачи связаны с построением тех или иных паросочетаний в двудольных графах. Разберем несколько примеров. 1. Пусть имеется η рабочих, каждый из которых может выполнить один или несколько из т видов работ. При этом каждый из видов работ должен быть выполнен одним рабочим. Требуется так распределить работы среди рабочих, чтобы наибольшее количество работ было выполнено.
286 Глава 12. Паросочетания в двудольных графах 2. Пусть в предыдущей задаче число рабочих η равно числу работ т. Спрашивается, можно ли так распределить работы между рабочими, чтобы были выполнены все виды работ? 3. Пусть сверх условий второй задачи для каждой пары рабочий-работа известна стоимость с(х,у) выполнения рабочим χ работы у. Требуется так подобрать каждому рабочему определенный вид работы, чтобы суммарная стоимость выполнения всех работ была минимальна. Математическая модель всех приведенных выше задач строится очевидным образом. Определим двудольный граф G = (Χ,Ε,Υ), в котором в качестве X выберем множество рабочих, а в качестве Υ — множество работ. Множество ребер Ε этого графа определим как множество всех пар (я, у) таких, что рабочий χ может выполнить работу у. Пусть Μ С Ε — паросочетание в построенном графе G. Тогда каждое ребро е = ху е Μ можно интерпретировать как назначение рабочему χ работы у. Действительно, по определению паросочетания никакие два ребра из Μ не могут иметь общих вершин, следовательно, на каждую работу назначается не более одного рабочего и каждый рабочий получает не более одной работы. В этой модели первая из рассмотренных задач означает, что в графе требуется найти паросочетание с наибольшим количеством ребер. Вторая — выяснить, существует или нет паросочетание, состоящее из η ребер. И наконец, в третьей задаче требуется найти паросочетание из η ребер с минимальным суммарным весом его ребер. В этой главе будут рассмотрены все три типа приведенных здесь задач. Введем необходимую терминологию. Пусть Μ — паросочетание в графе G = (X,i?,Y). Говорят, что Μ сочетает χ с у и у с я, если ху Ε Μ. Вершины, не принадлежащие ни одному ребру паросочетания, называются свободными относительно Μ или просто свободными, а все прочие — насыщенными в Μ или просто насыщенными. Таким образом, для каждой насыщенной в Μ вершины χ существует у такое, что Μ сочетает χ с у. Удобно также ребра, входящие в паросочетание Μ, называть М-темными или просто темными ребрами, а все прочие — Μ-светлыми или светлыми ребрами.
§ 12.2. Задача о наибольшем паросочетании 287 Паросочетание, содержащее наибольшее число ребер, называется наибольшим. Паросочетание, не содержащееся ни в каком другом паросочетании, называется максимальным. Иначе говоря, максимальным называется паросочетание, максимальное по включению. Необходимо различать эти два понятия. Понятно, что каждое наибольшее паросочетание является максимальным, но обратное неверно. Предлагаем читателю самому построить соответствующий пример. § 12.2. ЗАДАЧА О НАИБОЛЬШЕМ ПАРОСОЧЕТАНИИ. АЛГОРИТМ ХОПКРОФТА-КАРПА Задача о наибольшем паросочетании состоит в следующем: в заданном двудольном графе найти наибольшее паросочетание. Оказывается, что эту задачу можно свести к задаче построения максимального потока в некоторой сети. Пусть G = {Χ,Ε, Υ) — произвольный двудольный граф и s,t & XUY. Построим сеть G* = (V*,£*,c) с источником s и стоком t. В качестве множества вершин сети G* возьмем множество V* = XUYU{s}\J{t}. А множество дуг Е* определим следующим образом. Каждое ребро е = ху из Е, где χ е X и у е Υ, превращаем в дугу ху, исходящую из χ и входящую в у. Добавим к полученному множеству все дуги вида sx,yt, где χ е X и у G Y. Полученное в результате множество и есть множество дуг Е* сети (?*. Пропускную способность каждой дуги положим равной единице. На рис. 87 показаны граф G и соответствующая ему сеть G*. Заметим, что если / — целочисленный поток в сети (?*, то /(e) = 0 или /(e) = 1 для любой дуги е е Е. Кроме того, по теореме 11.5 среди таких 0-1-потоков существует максимальный поток. Оказывается, что каждому паросочетанию в графе G однозначно соответствует некоторый 0-1-поток в сети G*. Пусть V — множество всех паросочетании в графе G, а Т — множество всех 0-1-потоков в сети G*. Теорема 12.1. Существует взаимно-однозначное отображение φ множества V на множество Т, причем \М\ — = \\ф(М)\\ для любого паросочетания М.
288 Глава 12. Паросочетания в двудольных графах (Напомним, что через ||0(М)|| обозначается величина потока ф(М).) Доказательство. Для произвольного паросочетания Μ в графе G определим поток /м = Ф{М) в сети (?* по формулам /m(s,x) = /м(х,у) = fM{y,t) = 1 для любого ребра ху е Μ и /м(е) = 0 для остальных дуг е е Е* (соответствующий пример приведен на рис. 87). Докажем, что /м — поток в сети G*. Поскольку 0 ^ /м(е) ^ 1, условие ограничения по пропускной способности дуг выполняется. Остается проверить условие сохранения потока в вершинах. Пусть χ — насыщенная вершина из X в паросочетании М. Тогда /м(з,я) = 1 и, следовательно, /м(я~) = 1» т-е. поток, втекающий в вершину х, равен 1. Поскольку вершина χ насыщена в М, то существует ровно одно ребро ху е М, инцидентное х. Для этого ребра /м(я>2/) = 1 на соответствующей дуге ху. Все остальные ребра графа, инцидентные вершине х, являются светлыми, т.е. не входят в паросочетание М. Поэтому /м(е) = 0 для всех соответствующих дуг. Следовательно, /м(я+) = 1- Тем самым равенство /м(я—) = /м(#+) выполняется для насыщенных вершин. Если же χ не насыщена, т. е. χ — свободная вершина, то как входящий в х, так и выходящий из χ потоки равны нулю. Следовательно, условие сохранения потока в вершинах, лежащих в X, выполняется. Для вершин у еУ это условие проверяется аналогично. Далее, поскольку количество насыщенных в Μ вершин χ Ε X в точности равно |М|, то /м(«+) = |Л/|, т.е. ||<£(М)|| = = \М\. Легко видеть, что разным паросочетаниям соответствуют разные потоки. Следовательно, отображение φ : V —> J\ определенное равенством ф{М) = /м, инъективно. Обратно, пусть / — 0-1-поток в сети G*. Положим М/ = = {xy\f(x,y) = 1, χ е X, у Ε Y}. Поскольку в каждую вершину χ G X входит ровно одна дуга (это дуга вида sx), то имеется не более одной дуги вида хуу для которой f{x,y) = 1. Следовательно, каждая вершина χ е X инцидентна не более чем одному ребру из М/. Аналогично, каждая вершина у eY инцидентна не более чем одному ребру из М/. Отсюда следует, что М/ является паросочетанием в графе G. Легко видеть,
§ 12.2. Задача о наибольшем паросочетании 289 что для паросочетания М/ справедливы равенства \М/\ = ||/|| и ф{М/) = /, что завершает доказательство теоремы. D На рис. 87 изображены двудольный граф G, сеть G*, па- росочетание Μ = {х\У2,Х2Уз} и соответствующий ему поток /Л/. а) Ь) Рис. 87 Пусть / — произвольный 0-1-поток в сети G* и Ρ — /-дополняющая ($,*)-цепь. Тогда цепь Ρ содержит нечетное количество дуг. Удалим из этой цепи первую дугу, а она обязательно имеет вид sx, где χ Ε Χ, и последнюю дугу вида yt, где у Ε У. Оставшиеся в цепи Ρ дуги чередуются следующим образом: первой идет дуга вида ху, для которой f(x,y) = = 0, поскольку эта дуга прямая в цепи, второй — дуга вида х\уу причем эта дуга является обратной в цепи Ρ и потому f{xi,y) = 1; затем снова прямая дуга, потом обратная и т.д. Увеличение потока вдоль этой цепи по правилам, указанным в лемме 3 из § 11.1, приводит к тому, что новый поток становится равным единице на всех нечетных (т.е. прямых) дугах цепи Ρ и равным нулю на всех четных (т. е. обратных) дугах цепи Р. Величина потока при этом возрастает на единицу. Понятие /-дополняющей цепи для потока / в сети G* естественным образом соответствует понятию М-чередующейся цепи для паросочетания Μ в графе G. Пусть Μ — паросочетание в графе G. М-чередующейся цепью называется такая последовательность вершин и ребер вида хо,хоУ\,У\,У\Х2,Х2,'^Хк.ХкУк+ъУк+г, где А: > 0, что все вершины этой цепи различны, хо и у*+г — свободные, а все остальные вершины насыщенные в паросочетании Л/,
290 Глава 12. Паросочетания в двудольных графах причем каждое второе ребро принадлежит Μ (т. е* ребра вида ι/ΐΧί+ι,ί = l,...,fc — 1 входят в М), а остальные ребра в Μ не входят. Иначе говоря, в Μ-чередующейся цепи цвета ребер чередуются по правилу светлое-темное и наоборот, причем первое и последнее ребра являются светлыми. Ясно, что чередующаяся цепь однозначно определяется как последовательностью ее вершин, так и последовательностью ее ребер. Например, для паросочетания М, изображенного на рис. 87а, М-чередующуюся цепь можно задать последовательностью вершин яз»2/з»Я2»2/2»яь2/ь Эта цепь содержит два темных ребра и три светлых. Соответствующая /-дополняющая цепь в сети G*, где / = /л/, задается последовательностью вершин 5,£з,уз!£2>г/г,£ь2/ь*- В этой цепи дуги х2уз и х\у2 являются обратными, а остальные дуги — прямыми. Увеличению потока вдоль /-дополняющей цепи соответствует увеличение количества ребер в паросочетании Μ вдоль М-чередующейся цепи. Для этого в М-чередующейся цепи нечетные ребра, не входившие в М, объявляются элементами М, а все четные, входившие в Μ, из Μ удаляются. Иначе говоря, все темные ребра становятся светлыми, а все светлые — темными. Такая операция приводит к увеличению количества ребер в паросочетании на единицу. Например, паросочетание Μ из рис. 87а заменится на паросочетание {#з2/з> £22/2,#ι2/ι}· Напомним, что симметрическая разность двух множеств Μ и Ρ определяется следующим образом: M®P = {M\P)U{P\M). Процесс получения нового паросочетания М\ из паросочетания Μ с помощью М-чередующейся цепи Ρ можно выразить равенством Μχ = Μ Θ Ρ (здесь и далее под М-чередующейся цепью понимается последовательность ребер). Для паросочетания М\ справедливо равенство \М\\ = \М\ 4-1, поскольку в цепи Ρ светлых ребер на одно больше, чем темных. Из приведенных рассуждений и теоремы 11.2 вытекает следующий классический результат.
§ 12.2. Задача о наибольшем паросочетании 291 Теорема 12.2 (Берж, 1957). Паросочетание Μ в двудольном графе G является наибольшим тогда и только тогда, когда в G не существует Μ-чередующейся цепи. Ради полноты изложения приведем здесь прямое доказательство этой теоремы, не опирающееся на теорему Форда- Фа л керсона. Доказательство. Очевидно, если Μ — наибольшее паросочетание, то в графе G — (Χ,Ε,Υ) не существует Л/-чере- дующейся цепи. Докажем обратное утверждение. Предположим, что для паросочетания Μ не существует М-чередующейся цепи. Рассмотрим произвольное паросочетание N и убедимся, что \Ν\ < < \М\. Заметим, что в графе G\ = (Χ,Ν U Μ,Υ) степень каждой вершины не превосходит двух. Следовательно, каждая компонента связности графа G\ может быть одного из следующих типов: 1) изолированная вершина; 2) цепь четной длины; 3) цепь нечетной длины; 4) цикл. В случаях 1, 2 и 4 компонента связности содержит одинаковое число ребер из Μ и N. Если компонента связности — цепь нечетной длины (случай 3), то она является либо М-чередующейся, либо ^-чередующейся цепью. По предположению, М-чередующихся цепей в графе нет, следовательно, могут быть только JV-чередующиеся цепи. Но в каждой из этих цепей ребер из Μ на одно больше, чем ребер из N. Отсюда |ЛГ| < |М|, т. е. Μ — наибольшее паросочетание. D Теорема Бержа подсказывает следующий алгоритм построения наибольшего паросочетания: 1) пустое паросочетание Μ объявить текущим паросочета- нием; 2) искать М-чередующуюся цепь; 3) если такая цепь Ρ найдена, то положить Μ = Μ θ Ρ и вернуться на шаг 2; 4) иначе СТОП (текущее паросочетание Μ является наибольшим).
292 Глава 12. Паросочетания в двудольных графах Внимательный читатель, конечно, заметил, что предложенный алгоритм, по сути дела, является легкой модификацией алгоритма Форда-Фалкерсона. Отметим также, что поскольку каждый раз текущее паросочетание увеличивается ровно на единицу, то алгоритм завершит работу после не более чем η итераций, где η = тт(|Х|,|У|) (здесь использован тот факт, что наибольшее паросочетание содержит не более чем η ребер). Разберем подробнее процесс поиска М-чередующейся цепи. Здесь можно использовать любую схему поиска в ширину или в глубину. Чуть удобнее поиск в ширину. Сформулируем правила поиска в ширину в виде «волнового» алгоритма. В нулевой фронт распространения волны включаем все М-свободные вершины χ Ε Χ. Пусть фронт с номером к построен. Если к четно, то во фронт к + 1 включаем все вершины у Ε У, не содержащиеся ни в каком из предыдущих фронтов, которые можно пометить из вершин предыдущего фронта с помощью светлых ребер. Если к нечетно, то во фронт к -f 1 включаем вершины χ е Ε X, не содержащиеся ни в каком из предыдущих фронтов, которые можно пометить с помощью темных ребер из вершин предыдущего фронта. Поиск завершается, как только будет помечена свободная вершина у Ε Υ или очередной фронт окажется пустым. В первом случае окончания поиска М-чередующаяся цепь существует, она легко может быть построена с помощью стандартных меток Previous. Во втором случае М-чередующейся цепи в графе не существует и, следовательно, текущее паросочетание Μ является наибольшим. Теорема 12.3. Модифицированный алгоритм Форда- Фалкерсона построения наибольшего паросочетания в двудольном графе G = (Χ, Ε,Υ) имеет сложность 0(pqn), где ρ = |Х|, q = |У|, η = min(p,qr) и граф G представлен мат- рицей А[1..р, l..qr]. (Заметим, что матрица А является подматрицей матрицы смежности двудольного графа G.)
§ 12.2. Задача о наибольшем паросочетании 293 Доказательство. Выше уже отмечалось, что процесс завершится не более чем после η итераций. Сложность каждой итерации есть 0{pq). Поэтому модифицированный алгоритм Форда-Фалкерсона для построения наибольшего паросочета- ния имеет сложность 0(pqn). О Отметим, что в частном случае, когда п = \Х\ = |У|, модифицированный алгоритм Форда-Фалкерсона имеет сложность 0(п*). В 1973 году Хопкрофт и Карп предложили более эффективный алгоритм построения наибольшего паросочетания в двудольном графе. Пусть Μ — паросочетание в графе G = (Χ,Ε,Υ). Цепь Ρ назовем М~цепью, если она начинается в свободной вершине χ € X, имеет нечетную длину и цвета ребер чередуются по правилу светлое-темное и наоборот. Иначе говоря, М-цепь — это почти Μ-чередующаяся цепь; отличие состоит лишь в том, что М-цепь может заканчиваться в М-насыщенной вершине у £ Υ. Понятно, что каждая М-чередующаяся цепь является М-цепью, но обратное утверждение неверно. Пусть г — длина кратчайшей М-чередующейся цепи. Через G(M) обозначим граф кратчайших М-цепей; по определению этот граф состоит из всех вершин и ребер таких, что каждое ребро и каждая вершина входят в некоторую М-цепь длины г. Общую схему алгоритма Хопкрофта и Карпа построения наибольшего паросочетания можно описать следующим образом: 1) начать с произвольного паросочетания Μ в графе G; 2) построить граф G{M) кратчайших М-цепей; 3) построить максимальное по включению множество {Рь..., Pk) вершинно-непересекающихся М-чередующихся цепей в G(M). Увеличить паросочетание Μ вдоль всех цепей из построенного множества по формулам Мг = Μ Θ Pi, М2 = Μι θ Ρ2, ·.., Мк = Mfc-i θ Ρ*. Объявить паросочетание Мк текущим, т.е. Μ := Μ*. (Заметим, что Мк = ΜθΡιθ···θΡ^ и \Мк\ = |М| + Аг.)
294 Глава 12. Паросочетания в двудольных графах 4) повторять шаги 2 и 3 до тех пор, пока в сети G существует хотя бы одна М-чередующаяся цепь. Если такой цепи не существует, то текущее паросочетание Μ является наибольшим (теорема 12.2). Перейдем к формальному описанию алгоритма Хопкроф- та-Карпа. Двудольный граф G = (Χ, Ε, Υ) будем задавать матрицей А размера pq, где ρ = \Х\, q = |У|, в которой А[х, у] = 1, если ребро ху имеется в графе, и Л [ж, у] = 0, если такого ребра в графе нет. Паросочетание Μ в графе G можно описать с помощью двух массивов Xdouble длины ρ и Ydouble длины q, считая, что Xdouble[x] = у, если χ сочетается с у, и Xdouble[x] = nil, если вершина χ свободна. Аналогично определяется массив Ydouble. Таким образом, пустое паросочетание задается равенствами Xdouble[x] = Ydouble[y] = nil для всех χ е X и yeY. Вспомогательный граф G(M) кратчайших М-цепей несложно построить, используя поиск в ширину. Напомним, что каждая М-цепь начинается в свободной вершине χ е X, поэтому во вспомогательный граф G(M) следует отнести все свободные вершины χ е X и начать поиск с них. Поскольку нас интересуют чередующиеся цепи, нужно различать шаги от Χ κ Υ и от Υ к X. В первом случае переход осуществляется по светлым ребрам, (т.е. по ребрам, не входящим в М), а во втором случае по темным ребрам (т.е. по ребрам из М). Причем если в первом случае, находясь в вершине χ е X, следует отнести в G(M) все вершины, смежные с х, и все ребра, инцидентные х, то во втором — выбор вершины и ребра однозначен: из вершины yeY можно шагнуть только в вершину χ = Ydouble[y], используя ребро ху, которое входит в М. При этом вершину χ и ребро ху следует добавить к G(M). Процесс поиска завершается либо полным построением того фронта, в котором в первый раз встретится свободная вершина у € У, либо тогда, когда в граф G(M) нельзя отнести ни одной новой вершины и ни одного нового ребра, но свободных вершин yeY достичь
§ 12.2. Задача о наибольшем паросочетании 295 не удалось. Последний случай означает, что М-чередующихся цепей в графе G не существует. Через DXUDY, где DX CXuDYCY, будем обозначать множество вершин графа G(M). Множество ребер этого графа описывается матрицей DA размера pq, где ρ = \X\,q = \Y\. При этом лишние строки и столбцы матрицы DA, соответствующие элементам χ е X и у € К, не попавшим в DX и DY, будут игнорироваться. Построение вспомогательного графа G(M) представлено процедурой Graph(M). В ней используются две очереди. В очереди Qi хранится последний построенный фронт, а в очереди Q*i накапливаются вершины нового, строящегося фронта. При этом в очередной фронт распространения волны относятся лишь вершины из множества Ху ибо переход от Υ к X однозначен, т.е. за один шаг строим сразу два фронта. Все достигнутые свободные вершины у £ Υ заносятся в Υ free. Через Xfree обозначается множество всех свободных вершин χ е X. Через front[v], v € XUY, обозначается номер фронта, в который попадает вершина vt при этом для всех непомещенных еще в какой-либо фронт вершин (в традиционной терминологии непомеченных) выполняется равенство front[v] = 00. 1. procedure Graph(M) 2. begin 3. DX := DY := 0; 4. for χ e X do 5. foryer do DA[x,y] := 0; 6. for ν e X U Υ do front[v] := 00; 7. Q\ :— Q2 :— Xfree := Υ free := nil; 8. for χ € 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. Qi :=Q2; <?2 :=nil\
296 Глава 12. Паросонетания в двудольных графах 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. while Q\ φ nil do begin χ <=Qi\ for у G Υ do if (v4[i,j/J = 1) and (front[x] < front\y\) then begin DA[x,y] := 1; il frcmt[y] = oo then begin DY:=DYu{y}; ζ := Ydouble[y\; front[y] := front[x] + 1; if ζ φ nil then begin DA[z, y] := 1; DX := DX U z; /ronf[z\ := /roni[j/] + 1; Q2 <= -г; end else Υ free <= y; 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 анализируются все у € Y, смежные с очередной вершиной χ е е X и удовлетворяющие условию front[x] < front[y]. Здесь возможны лишь два случая. В первом случае front[y] = oo. Это означает, что вершина у ранее не посещалась, второй — front[y] = front[x] -f 1, т.е. вершина у уже помечена, но из вершины того же по-
§ 12.2. Задача о наибольшем паросочетании 297 следнего построенного фронта. В этом случае в граф G(M) нужно лишь добавить одно ребро ху (строка 23). Выполнение условия в строке 28 означает, что вершина у насыщена в паросочетании М. В этом случае вершина ζ = Ydouble[y] и ребро zy включаются в граф G(A/), причем ζ включается и в новый фронт (строка 31). В противном случае вершина у является свободной и заносится в Υ free. В строке 37 даны условия прекращения поиска. Случай Υ free Φ 0 свидетельствует, что найдена хотя бы одна свободная вершина у и, следовательно, в исходном графе существует М-чередующаяся цепь. Поиск на этом прекращается, и в граф G(M) благодаря свойствам поиска в ширину попадут все кратчайшие Μ-цепи. Разберем теперь метод построения максимального по включению множества вершинно-непересекающихся М-чере- дующихся цепей и увеличения текущего паросочетания Μ с помощью построенного множества. Сделать это можно следующим образом. Выберем произвольную вершину χ е Xfree. Проведем поиск в глубину с корнем в х, помечая вершины по тем же правилам, которые использовались при построении графа (?(М), и продвигаясь из вершины χ € X по светлым ребрам, а из вершин у € Υ — по темным. Помеченные в ходе поиска вершины помещаются в стек S. Поиск в глубину из вершины χ завершается либо по достижении свободной вершины у е Υ free (в этом случае существует искомая цепь, начинающаяся в χ и заканчивающаяся в у), либо тогда, когда S = nil. Пустота стека S означает, что в G(M) не существует М-чередующейся цепи, начинающейся в вершине х. Если искомая цепь существует, то после завершения поиска в S первая и последняя вершины свободны относительно М, а все промежуточные вершины насыщены в М. Отметим, что вершины чередуются — сначала вершина из DX, затем из DY и т. д. Увеличить паросочетание Μ с помощью найденной цепи очень просто: считываем попарно вершины из стека S (первой считается у е Υ) и корректируем значения массивов Xdouble и Ydouble. При этом у первой и последней из считанных вершин у и χ значения Ydouble[y] и Xdouble[x], равные nil, получат значения соответствующих соседних вершин из S, а у
298 Глава 12. Паросочетания в двудольных графах всех прочих произойдет смена значений массивов Ydouble и Xdouble с одних вершин на другие. Считывая вершины из S, мы одновременно удаляем их из графа G(M). В результате при построении следующей М-чередующейся цепи вновь найденная цепь не пересекается с прежде построенными- цепями по вершинам. Процесс построения цепей ведется до полного исчерпания одного из списков Xfree или Υ free, чем обеспечивается максимальность по включению построенного множества Μ -чередующихся цепей. Детали описанного процесса представлены в процедуре Increase(M). В ней1 без формального описания используется функция Choice(x), которая возвращает непомеченную в ходе поиска вершину у е DY, смежную с х, если такая существует, и Choice(x) = nil, если все вершины из DY, смежные с х, уже помечены. Переменная indication сигнализирует о том, достигнута ли свободная вершина у е DY, т. е. indication = О, если свободная вершина еще не достигнута, и indication = 1, если достигнута. 1. procedure Increase(M)\ 2. begin 3. while (Xfree φ 0) and (Yfree φ 0) do 4. begin 5. χ <= Xfree; Xfree :== Xfree \ {x}; 6. S :== nil; S <= x; indication :=^= 0; 7. while (S ^ nil) and (indication = 0) 8. begin 9. χ <= S; у := Choice(x)\ 10. if у Ф nil then 11. begin 12. S <= y; ζ := Ydouble[y\; 13. ύζφηιΐ then 5 <= z\ 14. else 15. begin 16. indication := 1; Yfree := 17. end 18. end 19. else do Yfree\{y};
§ 12.2. Задача о наибольшем паросочетании 299 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. begin x<=S;DX:=DX\{x}; if S φ 0 then begin y^S\DY := DY \ {y}; end end end; if indication = 1 then while S Φ nil do begin y<=S;DY:=DY\{y}; X4=S,DX := DX \ {x}; Xdouble[x] := y; Ydouble[y] := x; end end end. Структура этой процедуры следующая. Основной цикл 3- 35 ведется до полного опустошения одного из списков свободных в X или Υ вершин. Каждый проход этого цикла начинается с выбора произвольного элемента χ из Xfree и последующего поиска в глубину с корнем в χ (строки 6-27). Важно отметить, что если текущая вершина χ имеет непомеченную насыщенную смежную с ней вершину у, то в стек 5 помещаются сразу две вершины: сначала у, затем ζ = Ydouble[y] (строки 9-13). Можно сказать, что промежуточные вершины в ходе поиска помещаются в S парами. Именно этим обстоятельством объясняются действия в строках 20-25. Если вершины помещали в стек S парами, то и удалять их оттуда надо парами (кроме самой первой). В строках 20-25 сначала удаляется из S и из графа вершина х, все соседи которой уже посещались, а затем, если χ не первой попала в 5, удаляется та вершина у, для которой выполняется равенство Ydouble[y] = χ (впрочем, также справедливо и соотношение у = Xdouble[x}). В строке 28 анализируется, каким именно исходом завершился поиск в глубину.
300 Глава 12. Паросочетания в двудольных графах Если поиск удачный, т.е. indication = 1, то в цикле 29-34 увеличивается паросочетание Μ и удаляются из графа G(M) все вершины найденной Μ-чередующейся цепи. Соберем описанные процедуры в один алгоритм построения наибольшего паросочетания в двудольном графе. Алгоритм 12.1 (Хопкрофт, Карп) Вход: двудольный граф G = (Χ,Ε,Υ), заданный матрицей Л[1..р,1..<7], гдер=|Х|,* = т Выход: наибольшее паросочетание в графе (?, задаваемое массивами Xdouble[l..p] и Ydouble[\..q]. 1. begin 2. for χ e Χ do Xdouble[x] := nil\ 3. for у e X do Ydouble[y] := nil; 4. repeat 5. Graph(M)\ 6. if Υ free Φ 0 then Increase(M); 7. until Υ free = 0; 8. end. Дадим небольшой комментарий к этому алгоритму. В строках 2-3 строится пустое паросочетание М. После построения вспомогательного графа процедурой Graph(M) анализируется (условие в строке 6), содержит ли граф G(M) свободные в Μ вершины у е Υ. Если таковые имеются, то процедура Increase{M) увеличивает текущее паросочетание (условие в строке 7) и фаза повторяется. Если же список достигнутых процедурой Graph(M) свободных вершин у е Υ пуст, то алгоритм завершает работу и по теореме Бержа текущее паросочетание является наибольшим. Разберем работу алгоритма 12.1 на простом примере. На рис. 88а изображен исходный граф (?, а на рис. 886, с, d — паросочетания, полученные после каждой из трех фаз. Напомним, что фазой мы называем процесс построения вспомогательного графа и последующее увеличение текущего паросочетания; иначе говоря, фаза — это один проход основного цикла 4-7 в алгоритме 12.1.
§ 12.2. Задача о наибольшем паросочетании 301 Ясно, что вспомогательный граф G(M), построенный в первой фазе, совпадает с исходным, ибо все вершины у е € Υ являются свободными и неизолированными в G. Следовательно, выполняются равенства Xfree = X и Υ free = Υ. Предположим, что поиск в глубину в процедуре Increase(M) начнется с вершины х\. Теперь все зависит от значения функции Choice{x\). Пусть у2 = Choice{x\) (случай у\ = = Choice(x\) не так интересен). Тогда цепь х\,х\У2,У2 является М-чередующейся и в Μ будет добавлено ребро х\У2- Пусть следующей вершиной, взятой из списка Xfree, была вершина х^ и Choice{x/Cj = y$ (читатель заметил, что мы действуем максимально злоумышленно). Тогда в Μ добавится ребро Х4Уз· Больше ни одной М-чередующейся цепи в графе G(M) после удаления вершин #1,Х4»У2,2/з не существует. Первая фаза на этом закончится. Интересно отметить, что вспомогательный граф (?(М), построенный во второй фазе, в точности совпадает с исходным. Действительно, поиск в ширину начнется с вершин х2 и #з· Полный просмотр первого фронта приведет к тому, что
302 Глава 12. Паросочетания в двудольных графах в G{M) попадут вершины У2 и уз» а через них — вершины χι и #4· Затем из вершин х\ и х4 будут достигнуты вершины г/i и гу4. Конечно, во вспомогательный граф попадут и все ребра исходного графа. Предположим, что поиск в глубину начнется с вершины х^ и Choice^) = уз- Тогда будет найдена М-чередующаяся цепь с последовательностью вершин Х2,Уз,хл,У4· Паросочетание Μ увеличится вдоль найденной цепи следующим образом. Будет удалено ребро х42/з и добавлены ребра Х2Уз и х\у±. После удаления вершин Х2,Уз,хл,У4 ни одной М-чередующейся цепи в графе G{M) уже не существует. Результат второй фазы изображен на рис. 88с. Наконец, в третьей фазе поиск в ширину начнется с единственной свободной вершины х3. Вспомогательный граф представляет собой М-чередующуюся цепь, включающую вершины #з,2/з>#2,У2,#ь 2/1. Увеличение Μ вдоль этой цепи приводит к паросочетанию, изображенному на рис. 88rf, которое является наибольшим паросочетанием в заданном графе. Получим теперь оценку сложности алгоритма Хопкрофта- Карпа. Лемма 1. Пусть Μ и N — два паросочетания в двудольном графе G = (Χ,Ε,Υ) и \М\ = г < s = \N\. Тогда симметрическая разность Μ φ Ν содержит не менее s — г непересекающихся по вершинам Μ-чередующихся цепей. Доказательство. Рассмотрим граф G = (Χ, Μ φ Ν, Υ) и обозначим через G\,...,Gk компоненты связности этого графа. Поскольку Μ κ Ν являются паросочетаниями, каждая вершина графа G инцидентна не более чем одному ребру из Μ \ Ν и не более чем одному ребру из Ν\Μ. Отсюда следует, что каждая компонента связности имеет один из трех следующих видов: 1) изолированная вершина; 2) цикл четной длины с ребрами попеременно из Μ \ Ν и Ν\Μ; 3) цепь с ребрами попеременно из Μ \ N и N \ М. Обозначим через Ei множество ребер компоненты G*. Пусть аг = \ЕгПЩ-\Е{ПМ\.
§ 12.2. Задача о наибольшем паросочетании 303 В тех случаях, когда компонента d имеет тип 1) или 2), получаем di = 0. В случае 3) — либо di = -1. либо d{ = 1, либо di = 0. Причем случай di = 1 возможен только тогда, когда цепь начинается ребром из N и заканчивается ребром из N, т.е. является М-чередующейся. Остается показать, что d{ = 1 для не менее чем s — r индексов. Достаточно убедиться, что сумма всех значений di не меньше s — г. В приводимых ниже вычислениях все суммы берутся по г — 1,..., к: ^сг, = ^(|^плг|-|£;г-пм|) = = \N\M\-\M\N\ = \N\ - \М\ = s-r. Из этого равенства следует, что в графе имеется не менее s-r различных М-чередующихся цепей. D Лемма 2. Пусть Μ — паросочетиние в двудольном графе G и \М\ = г < s, где s — мощность наибольшего па- росочетания в G. Тогда существует Μ-чередующаяся цепь 2г длины, не превосходящей l· 1. s — r Доказательство. Пусть N — наибольшее паросочетание в G. Тогда \N\ = s и по лемме 1 множество Μ θ Ν содержит не менее s — r непересекающихся по вершинам (а следовательно, и по ребрам) М-чередующихся цепей. Пусть кратчайшая из них имеет длину 2к +1 (напомним, что длина каждой М-чередующейся цепи нечетна). Тогда ровно к ребер этой цепи принадлежат М. Следовательно, (s — r)k ^ г, так как каждая М-чередующаяся цепь содержит не менее к ребер из М. Из этого соотношения вытекает требуемое неравенство. D Следующий результат является ключевым. Лемма 3. Пусть Ρ и Ρ — чередующиеся цепи, построенные в разных фазах алгоритма Хопкрофта-Карпа, причем цепь Ρ построена раньше, чем цепь Р. Тогда \Р\ < \Р\.
304 Глава 12. Паросочетания в двудольных графах Доказательство. Достаточно рассмотреть случай, когда эти фазы непосредственно следуют друг за другом. Пусть Μ и N — паросочетания, которые были построены перед началом соответствующих фаз. Пусть Ρι,.,.,Ρ* — максимальное по включению множество вершинно-непересекающихся кратчайших Л/-чередующихся цепей, построенное алгоритмом, г — длина каждой из этих цепей. Тогда Ρ = Pi для некоторого г и Ν = ΜθΡιθ···θΡ*. Положим L = N 0 Р. Поскольку цепи Pi не пересекаются по вершинам (а потому не имеют общих ребер), имеем Μ θ L = Μ θ Μ θ Ρχ θ Ρ2 · · · θ Pk θ Ρ = = Pe(PiUftu---uft). Отсюда |M0L| = |P| + kr-2\Pf)Ql где Q = PiUP2U---UPa:. С другой стороны, так как |L| = \М\ 4- к + 1, множество ΜθΙ содержит не менее А: + 1 реберно-непересекающихся М-чередующихся цепей (лемма 1). Следовательно, |M0L|>(* + l)r, т. е. имеет место неравенство |P|+*r-2|PnQ|>(* + l)r. Отсюда |P|>r + 2|PnQ|. Так как в алгоритме Хопкрофта-Карпа выбиралось максимальное по включению множество вершинно-непересекающихся цепей, цепь Ρ имеет общую вершину ν хотя бы с одной из цепей Ρι,.,.,Ρ*. Поскольку после каждого увеличения относительно какой-либо чередующейся цепи все вершины цепи становятся насыщенными, эта общая вершина ν является насыщенной, т.е. не первой и не последней в цепи Р. Тогда темное относительно N ребро, инцидентное вершине ν, входит в обе цепи, т.е. PnQ ^ 0. Отсюда \Р\ > г. Ώ
§ 12.2. Задача о наибольшем паросочетании 305 Теорема 12.4. Число фаз алгоритма Хопкрофта-Карпа не превышает 2\_y/s\ -f 1, где s — мощность наибольшего паросочетания в данном графе. Доказательство. Пусть Мо = 0, Μχ,..., М3 — все паросочетания, Ро,..., Р3-\ — все чередующиеся цепи, последовательно построенные алгоритмом, и Mi = Mi-i ©P<-i,i = l,2,...,s. Каждая цепь Р; является чередующейся для некоторого паросочетания Mj (j ^ г), которое было построено перед началом очередной фазы. Поскольку внутри каждой фазы цепи не пересекаются по вершинам, цепь Pi является не только Mj -чередующейся, но также и Mk -чередующейся для всех к таких, что j < к ^ г. Еще раз отметим, что цепи, построенные в одной и той же фазе, имеют одинаковую длину, а в разных — разную. Таким образом, число фаз в алгоритме равно количеству различных чисел в последовательности |Po|,...,|Ps-i|. Пусть г = [s — yfs\. Тогда \МГ\ = г < s. Используя лемму 2 и несложные арифметические преобразования, получаем цепочку неравенств |PP|< JL- + i = Jf__i = Jf-^-i^ S — V S — Г S — [S — y/S] < -^ - 1 = 2д/в - 1 < 2|V«] + 1. Поскольку длина каждой цепи нечетна, последовательность |Ро|,...,|Рг| содержит не более [y/s\ + 1 различных чисел. Последовательность |Pr+i|, · - ·, \Ps-\\ может содержать не более (s - 1) — г других чисел. Кроме того, (s-l)-r = (s-l)-[s-^\ < <(*-!)- ((* - y/a) - 1) = y/i.
306 Глава 12. Паросочетания в двудольных графах Окончательно получаем, что в последовательности чисел |Р0|,..., |Ps_i| имеется не более 2[y/s\ -f 1 различных нечетных чисел, что завершает доказательство теоремы. D Теперь мы можем оценить вычислительную сложность алгоритма Хопкрофта-Карпа. Для данного двудольного графа G = (Χ,Ε,Υ) положим η = тах(|Х|,|У|). Ясно, что мощность наибольшего паросочетания не превосходит п. Теорема 12.5. Алгоритм Хопкрофта-Карпа имеет сложность 0(пъ^2). Доказательство. По теореме 12.4 число фаз имеет порядок у/п. Остается оценить сложность выполнения каждой фазы. В процедуре Graph(M) просматривается каждое ребро не более одного раза. Просмотр ребра означает просмотр соответствующего элемента матрицы смежности А, т. е. сложность этой процедуры есть 0(п2). Поиск в глубину, выполняемый в процедуре Increase(M), имеет сложность 0(p + q), поскольку использованные ребра и вершины удаляются из графа. Следовательно, сложность этой процедуры равна 0(п2). Отсюда вытекает, что сложность алгоритма Хопкрофта-Карпа равна {у/п) χ 0(п2), т. е. равна 0(п^2). Π § 12.3. ЗАДАЧА О ПОЛНОМ ПАРОСОЧЕТАНИИ. АЛГОРИТМ КУНА В этом разделе мы будем рассматривать двудольные графы G = (Χ,Ε,Υ), в которых множества X и Υ имеют одинаковое число вершин. Пусть т = \Е\ и η = \Х\ = \Υ\. Паросочета- ние, насыщающее все вершины данного двудольного графа, называется полным или совершенным. Задача, в которой требуется построить полное паросочетание, если оно существует, называется задачей о полном паросочетании. Критерий существования полного паросочетания дает нам следствие 3 из § 4.11. Теорема 12.6 (Холл, 1935). В двудольном графе G = = (Χ,Ε,Υ) полное паросочетание существует тогда
§ 12.3. Задача о полном паросочетании. Алгоритм Куна 307 и только тогда, когда для любого S С X справедливо неравенство \S\ < \E(S)\, где E(S) обозначает множество всех вершин из Y, смежных с некоторыми вершинами из S. С точки зрения построения алгоритмов ценность этой теоремы невелика. В самом деле, для проверки выполнения условия существования полного паросочетания требуется просмотреть 2п подмножеств множества X. Более того, даже если условия выполняются, теорема не дает никакого метода построения полного паросочетания. Тем не менее эта теорема бывает зачастую полезной в различных вопросах теории графов и, кроме того, представляет самостоятельный интерес. Одним из возможных методов решения задачи о полном паросочетании было бы применение алгоритма Хопкрофта- Карпа и выделение наибольшего паросочетания. Если это па- росочетание состоит из η ребер, то оно является полным, а если наибольшее паросочетание имеет меньше чем η ребер, то в данном графе полного паросочетания не существует. Главным недостатком такого метода является то, что в случае отсутствия полного паросочетания мы узнаем об этом только после завершения работы алгоритма. Рассмотрим теперь алгоритм, который завершает работу либо построением полного паросочетания, либо в тот момент (а он может наступить достаточно рано), когда станет ясно, что полного паросочетания не существует. Этот алгоритм составляет существенную часть метода, разработанного Куном в 1955 году для решения более общей задачи — задачи о назначениях. Кун назвал свой метод венгерским алгоритмом. Алгоритм построения полного паросочетания, который мы здесь разберем, будем называть алгоритмом Куна. Неформально алгоритм Куна можно изложить следующим образом: 1) пустое паросочетание объявить текущим паросочетани- ем М\ 2) если все вершины из X насыщены в М> то СТОП (М — полное паросочетание);
308 Глава 12. Паросочетания в двудольных графах 3) иначе выбрать произвольную свободную вершину χ G X и искать М-чередующуюся цепь, начинающуюся в х\ 4) если такая цепь Ρ найдена, то положить Μ = Μ Θ Ρ и вернуться на шаг 2; 5) иначе СТОП (полного паросочетания в заданном графе не существует). Разберем изложенный алгоритм подробнее. Для поиска М-чередующейся цепи можно использовать как поиск в глубину, так и поиск в ширину. В данном случае удобнее использовать поиск в глубину. Правила поиска те же самые, что и в алгоритмах построения наибольшего паросочетания Форда- Фалкерсона или Хопкрофта-Карпа. Опять переход из вершин χ € X к вершинам у GY осуществляется по светлым относительно текущего паросочетания ребрам, готуеУкхеХ — по темным. Как всегда, возможны два исхода поиска: либо будет найдена свободная вершина у € У, т. е. найдена М-чередующаяся цепь, либо чередующейся цепи, с началом в корневой вершине поиска не существует. В первом случае действия стандартны. Увеличиваем текущее паросочетание с помощью найденной цепи и начинаем вновь искать М-чередующуюся цепь из другой свободной вершины, если таковая существует. Второй возможный исход поиска интереснее. Собственно, именно этот случай и является изюминкой предлагаемого алгоритма. Пусть поиск в глубину начинался с вершины χ и М-чередующаяся цепь не была найдена. Тогда дерево поиска выглядит следующим образом. Вершина χ находится в корне дерева поиска. Все вершины, уровень которых в дереве поиска есть число нечетное, принадлежат У, а все вершины с четным уровнем — X, причем все вершины дерева за исключением χ насыщены в М. Кроме того, ребра, исходящие из вершин с нечетным уровнем, соответствуют ребрам паросочетания М, а все прочие — ребрам, не входящим в М. Такое дерево часто называют венгерским или чередующимся деревом. На рис. 89 дан пример графа и паросочетания в нем, а также дерево поиска в глубину из вершины х^. На этом рисунке ребра паросочетания и соответствующие дуги изображены
§ 12.3. Задача о полном паросочетании. Алгоритм Куна 309 утолщенными линиями. Числа в скобках, проставленные рядом с вершинами, соответствуют тому порядку, в котором они просматривались в ходе поиска. а) *г » Рис. 89 Обозначим через S множество всех вершин дерева поиска, уровень А: которых является четным числом. Тогда S С X. Пусть E(S) — множество всех у € У, смежных с вершинами из S. Покажем, что все вершины E(S) попадают в дерево поиска. Пусть у € E(S). Если вершина у смежна с корневой вершиной поиска х, то соединяющее их ребро является светлым, так как χ — свободная вершина. Тогда по правилам поиска вершина у непременно будет помечена и, следовательно, у входит в дерево поиска. Если у смежна с насыщенной вершиной χ е S, то χ попадает в дерево поиска только после того, как туда попадет смежная с ней по темному ребру вершина у*. Поскольку Μ — паросочетание, имеем у = у*. Отсюда вытекает, что у была помечена раньше чем х. Тем самым проверено, что E(S) содержится в дереве поиска. Пусть к нечетно. Тогда из каждой вершины у уровня к в дереве поиска исходит ровно одна дуга. Следовательно, если число к нечетно, то количество вершин, имеющих уровень к, равно количеству вершин уровня к + 1. Из приведенных рассуждений следует, что \S\ = \E(S)\ + 1, так как корневая вершина поиска является «лишней». Отсюда получаем
310 Глава 12. Паросочетания в двудольных графах \S\ > \E(S)\, следовательно, граф G не имеет полного паросочетания в силу теоремы Холла. Проведенный анализ показывает, что, осуществляя поиск в глубину, мы находимся в беспроигрышной ситуации. Либо поиск завершится нахождением чередующейся цепи, и тогда текущее паросочетание можно увеличить, либо такая цепь не будет найдена, и тогда можно остановить работу алгоритма, ибо полного паросочетания не существует. При формальной записи этого алгоритма предполагается, что двудольный граф G = (Χ,Ε,Υ) задан матрицей смежности л4[1..п, 1..п]. Текущее паросочетание описывается двумя массивами Xdouble и Ydouble длины η каждый. Напомним, что Xdouble[x] = у, если χ сочетается с у, и Xdouble[x] = nil, если χ — свободная вершина относительно паросочетания М. Массив Ydouble определяется аналогично. Структура алгоритма Куна следующая. Через Τ обозначается множество свободных вершин относительно текущего паросочетания. Через Start(T) обозначается функция, которая возвращает для непустого множества Τ произвольный элемент. В строках 3-4 инициализируется пустое паросочетание. В строках 6-21 осуществляется поиск в глубину из свободной вершины х. Эти строки являются почти точной копией аналогичных строк в процедуре Increase(M) из предыдущего раздела. Вновь используется переменная indication, которая равна нулю, если свободная вершина у е Υ еще не встретилась, и становится равной единице, как только достигается какая-нибудь свободная вершина у € Υ. Функция Choice(x) возвращает произвольную смежную с χ вершину у е Υ у не посещавшуюся в ходе поиска из вершины х. Если такой вершины нет, то Choice(x) = nil. Отметим, что при программной реализации этой функции не обойтись без переменной, указывающей на то, посещалась или нет данная вершина. Строки 6-21 показывают, что в стек S вершины помещаются парами. Использованные в ходе поиска вершины удаляются из S тоже парами (строки 18-19). Строка 14 показывает, что сразу по достижении свободной вершины, т. е. такой вершины у, для которой Ydouble[y\ = nil, переменная indication
§ 12.3. Задача о полном паросочетании. Алгоритм Куна 311 становится равной единице. После этого (условие в строке 7) процесс поиска из вершины χ сразу остановится. После завершения поиска в строке 22 анализируется, чем именно закончился поиск из данной вершины. В том случае, когда поиск завершился достижением свободной вершины, в строках 23-27 происходит увеличение текущего паросочета- ния. В строке 28 приведены два возможных исхода работы алгоритма 12.2. Понятно, что условие Τ = 0 означает, что все вершины множества X насыщены, т.е. текущее паросочетание является полным. Если же поиск из какой-либо вершины не завершился нахождением свободной вершины у, т.е. по окончании поиска имеем равенство indication = 0, то первое условие в строке 28 обеспечивает остановку алгоритма. Этот вариант окончания работы алгоритма говорит о том, что полного паросочетания не существует. Алгоритм 12.2 Кун Вход: двудольный граф G = (Χ,Ε,Υ), заданный матрицей Л[1..п,1..п], гдеп=|Х| = |У|. Выход: полное паросочетание, задаваемое массивами Xdouble и Ydouble, либо сообщение о том, что такого паросочетания не существует. 1. begin 2. Τ := Χ; 3. for χ e X do Xdouble[x] := nil; 4. foryey do Ydouble[y] := nil; 5. repeat 6. S := nil; χ := Start(T); S <= x; indication := 0; 7. while (S Φ nil) and (indication = 0) do 8. begin 9. χ <= S; у := Choice(x); 10. if у ф nil then 11. begin 12. S <=y; ζ := Ydouble[y]; 13. if ζ φ nil then S «= z; 14. else indication = 1; 15. end
312 Глава 12. Паросочетания в двудольных графах 16. else 17. begin 18. 4=S; 19. if 5^0 then <= S; 20. end 21. end; 22. if indication = 1 then 23. while S φ nil do 24. begin 25. x<=S\y<=S\T:=T\ {x}\ 26. Xdoub/efx] := 2/; УйоиЬ/е[?/] := χ; 27. end 28. until (indication = 0) or (Γ = 0); 29. end. Так как поиск в глубину из заданной вершины имеет сложность 0(п2) и основной цикл 5-28 алгоритма 12.2 выполняется не более η раз, справедлива Теорема 12.7. Алгоритм Куна имеет сложность 0(п3). Вернемся к графу, изображенному на рис. 89а. Паросоче- тание, изображенное на нем, могло быть получено в процессе работы алгоритма 12.2 следующим образом. Пусть первый раз функция Start выбрала вершину х$. Тогда поиск в глубину с корнем #5 сразу же находит свободную вершину 2/4 и для текущего паросочетания Μ имеем Μ = {хьУа}· Пусть на втором шаге поиск велся из вершины х2. Тогда для нового паросочетания Μ имеем Μ = {х$2/4,#22/2}· Пусть на третьем шаге поиск велся из вершины хз и была найдена свободная вершина J/1. Тогда к текущему паросочетанию добавилось ребро #з2/1· Предположим, что в четвертой итерации поиск начнется с вершины х\. Тогда будет найдена свободная вершина 2/з, при этом стек S после завершения поиска включает вершины #ь2/ь#з,2/з· В результате из паросочетания Μ будет удалено ребро #з2/1 и будут добавлены два ребра xiyi и хзУз- Дальнейший поиск из вершины х±, который не находит свободной вершины у € У, нами уже рассматривался. В ре-
§ 12.4. Задача о назначениях. Венгерский алгоритм 313 зультате работа алгоритма будет завершена, так как полного паросочетания в данном графе не существует. Отметим, что вершина хв при работе алгоритма даже не рассматривалась. Завершая обсуждение алгоритма Куна, отметим, что он может быть реализован и на основе поиска в ширину. Все принципиальные моменты построения алгоритма при такой замене сохраняются. § 12.4. ЗАДАЧА О НАЗНАЧЕНИЯХ. ВЕНГЕРСКИЙ АЛГОРИТМ Пусть G = (X, Е, с, Y) — взвешенный двудольный граф, |Х| = \Y\ = п. Напомним, что весом паросочетания Μ называется сумма весов его ребер. Задача о назначениях состоит в следующем: в заданном двудольном взвешенном графе найти полное паросочетание минимального веса. Рассматривая эту задачу, мы будем предполагать, что заданный граф является полным, т. е. любые две вершины χ € X и у € Υ соединены ребром. Это предположение не ограничивает общности, ибо любую пару несмежных вершин χ иу можно считать соединенной ребром веса, большего суммы весов всех исходных ребер графа. Полное паросочетание минимального веса назовем для краткости оптимальным паросочетанием. Лемма 1. Если веса всех ребер графа, инцидентных какой-либо вершине, увеличить (уменьшить) на одно и то же число, то всякое оптимальное паросочетание в графе с новыми весами является оптимальным и в графе с исходными весами. Справедливость леммы 1 немедленно следует из того, что для каждой вершины полное паросочетание содержит ровно одно ребро, инцидентное этой вершине. В частности, эта лемма позволяет рассматривать только такие графы, веса ребер которых неотрицательны. Действительно, пусть α — минимум весов ребер данного графа. Если а < О, то увеличим вес каждого ребра на -а. Тогда веса всех
314 Глава 12. Паросочетания в двудольных графах ребер станут неотрицательными, а множество оптимальных паросочетаний не изменится. Более того, можно рассматривать только те графы, у которых каждой вершине инцидентно хотя бы одно ребро нулевого веса. Действительно, достаточно для каждой вершины из весов всех инцидентных ей ребер вычесть минимальный из них. Пусть X' С X, У С Υ и d — некоторое число. Будем говорить, что к графу G = (Χ,Ε,ο,Υ) применена операция (X',d, Y'), если сначала из веса каждого ребра, инцидентного вершине из X', вычтено d, а затем к весу каждого ребра, инцидентного вершине из У, прибавлено d. Следующий простой результат играет важную роль. Лемма 2. Пусть G = (X, Е, с, Y) — двудольный взвешенный граф с неотрицательными весами, X'CX,Y'CYu d = min{c(x,y)\x € Х',у € Υ \ Υ'}. Если к графу G применить операцию (Χ',ά,Υ'), то: 1) веса всех ребер G останутся неотрицательными; 2) веса ребер вида ху, где χ € X', у е Υ' или χ £ X \ X', у € У \ У, не изменятся. Доказательство. Будем считать, что граф G задан квадратной матрицей весов А порядка п, в которой л4[ж,з/] = = с(х,у). Не ограничивая общности, можно считать, что X' состоит из первых g элементов множества I, а У - из первых h элементов множества У. Тогда, очевидно, число d равно минимальному элементу из числа тех элементов матрицы А, которые стоят в первых g строках и в последних n — h столбцах. Уменьшение на число d весов всех ребер, инцидентных данной вершине χ е Х\ означает вычитание числа d из всех элементов соответствующей строки матрицы А, а увеличение на d весов всех ребер, инцидентных данной вершине у € У, означает прибавление числа d ко всем элементам соответствующего столбца матрицы А. Схематично операцию (X',d, У) изобразим с помощью табл. 1. Элементы матрицы А, находящиеся в области I, вначале уменьшаются на d, а затем увеличиваются на то же самое число d. В результате эти элементы не меняются, т.е. не меняются веса ребер вида ху, где х<£ X' и у € У. Все элементы
§ 12А. Задача о назначениях. Венгерский алгоритм 315 из области II останутся неотрицательными, ибо d не превосходит каждого из них. Элементы области III вообще никак не меняются, т. е. не меняются веса ребер вида ху, где χ € Х\Х* и у е Υ \ У. В области IV элементы увеличатся на число d. В результате они останутся неотрицательными. D X' Х\Х' Y' I IV +d Y\Y' II -d III Следующий вспомогательный результат совершенно очевиден. Лемма 3. Если веса всех ребер графа неотрицательны и некоторое полное паросочетание состоит из ребер нулевого веса, то оно является оптимальным. Три сформулированные леммы позволяют разработать алгоритм построения полного паросочетания минимального веса в полном двудольном взвешенном графе. Этот алгоритм был предложен Куном и назван им венгерским алгоритмом. Сначала приведем неформальное описание венгерского алгоритма: 1) преобразовать веса ребер данного графа таким образом, чтобы веса всех ребер стали неотрицательными и каждой вершине стало инцидентно хотя бы одно ребро нулевого веса; 2) пустое паросочетание объявить текущим паросочетани- ем М\ 3) если в графе все вершины насыщены относительно текущего паросочетания, то СТОП (текущее паросочетание оптимально); 4) иначе выбрать произвольную свободную вершину χ е еХи искать М-чередующуюся цепь, которая начинается в вершине χ и состоит только из ребер нулевого веса; 5) если такая цепь Ρ построена, то положить Μ = Μ 0 Ρ и вернуться на шаг 3;
316 Глава 12. Паросочетания в двудольных графах 6) иначе для множества вершин X' С X и У С У, помеченных в ходе поиска (это вершины венгерского дерева), положить d = min{c(x,y)\x Ε X', у € Υ \ Υ'} и применить к графу операцию (X',d,Y')\ 7) из тех вершин χ € X', которым стало инцидентно хотя бы одно ребро нулевого веса, возобновить поиск М-череду- ющейся цепи, используя только ребра нулевого веса; если такая цепь Ρ будет построена, то положить Μ = Μ Θ Ρ и вернуться на шаг 3, иначе — вернуться на шаг 6 (множества X' и Υ' при этом увеличатся). Обоснуем теперь корректность алгоритма. Докажем, что каждый поиск из очередной свободной вершины χ € X завершится в конце концов построением М-че- редующейся цепи, которая начинается в выбранной вершине χ и состоит только из ребер нулевого веса. Пусть выполнение шага 4 не привело к этой цели. Разберем подробнее выполнение шагов 5, 6 и 7. Поскольку поиск ведется по ребрам нулевого веса, каждое ребро вида ху, где χ € X' и у € Υ \ У, имеет вес больше нуля, так как все эти ребра являются светлыми относительно текущего паросочетания. Поэтому d > 0. Тогда, очевидно, применение операции (Χ',ά,Υ') приводит к тому, что хотя бы у одной вершины я* Ε X' появится инцидентное ей ребро нулевого веса и, следовательно, при выполнении шага 7 множество У увеличится хотя бы на одну вершину. Более того, применение операции (X',d, Y') в силу леммы 2 не меняет весов ребер дерева поиска, так как они имеют вид хуу где χ € X' и у Ε У, и не меняет весов ребер текущего паросочетания, не попавших в дерево поиска, поскольку они имеют вид ху, где χ € X \ X' и 2/€У\Г. Таким образом, выполнение шага 6 не меняет нулевые значения весов ребер текущего паросочетания и в графе появляются новые ребра нулевого веса. Поскольку при выполнении шага 6 множество Υ' увеличивается, этот шаг не может выполняться более η раз и, следовательно, на некотором выполнении шага 7 будет достигнута свободная вершина у € G У, т.е. не более чем через η итераций будет построена Af-чередующаяся цепь.
§ 12.4. Задача о назначениях. Венгерский алгоритм 317 Поскольку поиск всегда ведется по ребрам нулевого веса, каждое текущее паросочетание имеет нулевой вес. Поэтому алгоритм завершит работу построением полного паросочета- ния нулевого веса, которое в силу леммы 3 будет оптимальным. Отметим, что в алгоритме используются те же правила поиска, что и в алгоритме Куна из предыдущего раздела: переход от вершин множества X к вершинам множества Υ осуществляется по светлым ребрам, а от Υ κ Χ — по темным ребрам. Перейдем теперь к формализованному изложению венгерского алгоритма. Будем считать, что полный двудольный взвешенный граф G = (Л\£,с,У), где |Х| = |У| = п, задается матрицей весов Д в которой А[х, у] = с(х, у) для любых χ Ε GX nyeY. Как и раньше, текущее паросочетание Μ будем описывать двумя массивами Xdouble и Ydouble. Поскольку матрица весов постоянно модифицируется с целью получения большего числа нулей, удобно иметь еще одну матрицу весов В, в которой и будут отражаться все изменения весов ребер. Так как в ходе поиска нас будут интересовать лишь ребра нулевого веса, заведем для каждой вершины χ € X по списку Bzero[x], который включает все такие вершины у € Y, что В[х,у] = = 0. Кроме того, для организации самого поиска удобно иметь динамически меняющуюся копию этого списка в виде стека, который будем обозначать через S[x]. Опишем вначале процедуру поиска Search(x). По сути дела она повторяет строки 5-15 алгоритма Куна из предыдущего раздела, но здесь нам удобнее записать ее рекурсивно. В ней используются обычным образом переменная mark (для того, чтобы различать помеченные и непомеченные вершины) и массив Previous. Через X' и Y' обозначаются соответственно множества вершин из X и Υ, помеченных в ходе поиска. Переменная indication служит для прекращения поиска сразу после того, как достигается свободная вершина у GY. Поиск ведется лишь при выполнении условия indication = 0. Перед первым вызовом этой процедуры выполняются равенства S[x] = Bzero[x] для всех χ е X.
318 Глава 12. Паросочетания в двудольных графах 1. procedure Search{x)\ 2. begin 3. while (S[x] Φ nil) and (indication = 0) do 4. begin 5. у <= S[x\; 6. if mark[y] = 0 then 7. begin 8. mark[y] := 1; Previously] := #; Y7 := У U {?/}; 9. г := Ydouble[y]\ 10. if г ф nil then 11. begin 12. raarfcfz] := 1; Previous[z] := y; 13. X' := X' U {г}; Search{z); 14. end 15. else indication := 1; 16. end 17. end 18. end. Теперь мы можем дать формализованное изложение венгерского алгоритма. В нем без формального описания будем использовать функции Transform(A), Start(T) и процедуру Operation(X\ d, Yf). Первая функция из исходной матрицы А сначала получает матрицу с неотрицательными значениями элементов, добавляя ко всем ее элементам достаточно большое положительное число. Затем, вычитая из каждой строки минимальный в этой строке элемент и действуя аналогично со столбцами, получает матрицу с неотрицательными значениями элементов, в которой в каждой строке и каждом столбце имеется хотя бы один нулевой элемент. После применения этой функции каждой вершине графа инцидентно хотя бы одно ребро нулевого веса. Ясно, что функция Transform(A) имеет сложность 0(п2). Преобразованную таким образом матрицу весов будем обозначать через В, и все дальнейшие изменения весов ребер будем отражать именно в ней. \ г Процедура Operation(X',d,Yf) сначала вычисляет значение d = min{c(x, y)\x е X',y еУ\ У}, а затем применяет
§ 12.4. Задача о назначениях. Венгерский алгоритм 319 к графу операцию (X',d, У) таким образом, как это описано выше. Данная операция выполняется в текущей матрице весов — матрице В. Отметим, что новые нулевые значения в матрице В могут появиться только для пар χ е X' и у е УДУ. Понятно, что эта процедура имеет сложность 0(п2). Через Τ будем обозначать множество вершин χ € X', для которых существует вершина у Ε Υ \ Υ' такая, что В[х,у] — = 0. Как уже отмечалось выше, после применения процедуры Operation(X' ,d,Y') в множестве Τ появится хотя бы один ненулевой элемент. Функция Start(T) выбирает произвольный элемент χ е Т. Алгоритм 12.3 Вход: полный двудольный взвешенный граф G = (X,Е,c,Y), заданный матрицей весов А[\..п,\..п]. Выход: полное паросочетание минимального веса в графе G, заданное массивами Xdouble[l..n] и Ydouble[l..n]. 1. begin 2. В := Transform(A); 3. for χ € X do Bzero[x] := nil; 4. for χ € X do 5. for у € Υ do 6. if B[x,y] — 0 then Bzero[x] <= y; 7. for x0 € X do 8. begin 9. for у e Υ do mark[y] := 0; 10. for χ e X do 11. begin 12. mark[x] := 0; S[x] := Bzero[:r]; 13. end; 14. mark[x0] := 1; X' := {x0}; Y' := 0; 15. indication := 0; Search(xo); 16. if indication = 0 then 17. repeat 18. Operatkm(X\ У, d); Γ := 0; 19. for xtX' do 20. for у €У\У do 21. if Б[х)2/] =0 then
320 Глава 12. Паросочетания в двудольных графах 22. begin 23. Bzero[x] <= у\ S[x] <= у\ 24. Т:=Ти{х}; 25. end; 26. while (Τ φ 0) and (indication = 0) do 27. begin χ := Start(T)\ Search(x) end 28. until indication = 1; 29. χ := Previous[y}\ Xdouble[x] :=?/; Ydouble[y] :=x\ 30. while χ φ χο do 31. begin 32. ?/ := Previous[x)\x := Previous[y]\ 33. Xdoubie[x] := ?/; Kdoub/e[?/] := x\ 34. end 35. end 36. end. Дадим комментарий к венгерскому алгоритму. В основном цикле 7-35 осуществляется поиск из очередной вершины хо € € X, который ведется до тех пор, пока не будет найдена свободная вершина у Ε Υ и тем самым чередующаяся цепь относительно текущего паросочетания. Этот поиск осуществляется в два этапа. Вначале, после инициализации исходных данных (строки 9-15), вызывается процедура поиска в глубину из корневой вершины х$. Затем (условие в строке 16), если в ходе этого поиска не удалось достичь свободной вершины у GY, процедура Operation(X',d, У), выполняемая в строке 18, позволяет расширить поле поиска, ибо появятся новые ребра нулевого веса. Новый поиск, как это следует из строк 20-27, может выполняться из любой вершины венгерского дерева. Условие в строке 28 показывает, что такой новый поиск ведется до достижения свободной вершины у € Y. Как уже отмечалось выше, свободная вершина будет достигнута не более чем за η итераций цикла 17-28. В строках 29-34 увеличивается текущее паросочетание. В новом паросочетании вершина хо становится насыщенной и остается такой на протяжении дальнейшей работы алгоритма.
§ 12.4. Задача о назначениях. Венгерский алгоритм 321 Теорема 12.8. Алгоритм 12.3 имеет сложность 0(п4). Доказательство. Функция Transform(A) имеет сложность 0(п2). Такую же сложность имеет цикл, выполняемый в строках 4-6. Основной цикл 7-35 выполняется ровно η раз. Остается определить сложность выполнения всех операций внутри основного цикла. Поиск в глубину, вызываемый в строке 15, имеет сложность 0(п2). Цикл 17-28 имеет сложность 0(п2), поскольку содержит процедуру Operation(X' ,d,Y'). Этот цикл работает, вообще говоря, η раз. Следовательно, сложность цикла 17-28 есть 0(п3). Понятно, что увеличение текущего паросочетания, выполняемое в строках 29-34, требует не более сп операций, где с — константа. Окончательно, получаем оценку сложности алгоритма 0(п4). Замечание. В венгерском алгоритме оценка 0(п4) возникает по сути дела из-за того, что приходится порядка п2 раз выполнять операцию (X',d,Y')y которая имеет сложность 0(п2). Между тем известен способ реализации этой операции со сложностью 0(п). Для этого достаточно применить прием, использованный нами в алгоритме Ярника- Прима-Дейкстры. А именно при каждом входе в основой цикл 7-35 необходимо завести два массива D и Near длины п, которые динамически меняются в ходе поиска таким образом, что для всех у Ε Υ \ У выполняется равенство D[y] =min{c(x,y)\xeX'} и указатель Near[y] дает ту вершину χ Ε Χ', для которой этот минимум достигается, т.е. D[y] =c(Near[y],y). Тогда вычисление величины d требует порядка η операций, ибо d = mm{D[y)\y€Y\Y'}: Модифицировать можно веса не всех ребер, а только ребер вида Near[y]y, что также требует порядка η операций. Тем самым результат операции {X',d, У) можно получить за
322 Глава 12. Паросочетания в двудольных графах время 0(п2). Такая реализация венгерского алгоритма имеет сложность 0(п3). Все детали изложенного метода можно найти в [46]. Разберем пример, иллюстрирующий работу алгоритма 12.3. Ниже (а) изображена матрица весов исходного графа, а Ь) — результат применения к ней функции Transform(A). ( 1 4 4 3 \ 2 7 6 8 4 7 5 6 \ 2 5 1 1 / / 0 0 3 2 \ /002 1 \ 0 2 4 6 0 0 12 \ 1 1 0 0 / 0 2 3 5 0 0 0 1 \ 2 2 0 0 / а) Ъ) с) Матрица Ь) получена следующим образом. Сначала из каждой строки вычли ее минимальный элемент, а именно из первой строки вычли 1, из второй — 2, из третьей — 4, из четвертой — 1. Затем из второго столбца (поскольку это единственный из столбцов, который не содержит нулей) вычли 3. В результате в матрице Ь) в каждой строке и каждом столбце имеется хотя бы один нуль. В дальнейшем будем предполагать, что вершины просматриваются циклами в порядке возрастания их номеров. Поэтому основной цикл в строках 7-35 венгерского алгоритма начнется с вершины х\. Сразу же будет найдена свободная вершина у\ и, следовательно, текущее паросочетание Μ приобретет вид Μ = {хгуг}. Следующей вершиной будет вершина х^. Дерево поиска из вершины х2 изображено на рис. 90а, где цифры в скобках означают порядок, в котором вершины встречаются в ходе поиска. Дуги, соответствующие ребрам паросочетания, изображаются сплошными линиями, а прочие — пунктиром. Поиск из вершины х2 завершается достижением свободной вершины ί/2, и, следовательно, текущее паросочетание будет иметь вид Μ = {х\У\,Х2У2). Поиск из вершины хз не приводит к достижению свободной вершины. Соответствующее дерево поиска изображено на рис. 906. Тогда мы имеем X' = {хьлг2,хз} и У = {2/1,2/2}· По-
§ 12.5. Вершинные покрытия и паросочетания 323 «) "' Ь) *, с) х* У,Ф„. "ff^ ♦(3)'"···(δ) y»fr^ ί;'·(7) «t i<2> *.i<2> 1(4) *1 1 (6) Рис. 90 этому d равно минимальному элементу среди элементов матрицы 6) на стр. 322, находящихся в первых трех строках и последних двух столбцах. Следовательно, d = 1. Применяя к матрице Ь) (стр. 322) операцию (X\d, Y'), получаем матрицу с) (стр. 322). В результате у вершины хз появится новое инцидентное ей ребро нулевого веса — хзУз- Поиск возобновится из вершины хз и сразу же завершится достижением свободной вершины у$. Таким образом, после этой итерации ПОЛуЧИМ Μ = {Х2У\,Х\У2,ХЪУЪ}' Дерево поиска из вершины х± изображено на рис. 90с. К текущему паросочетанию Μ добавится ребро х^Уа- Тем самым, текущее паросочетание Μ = {х22/ь#12/2>#з2/з>#42/4} ста" нет полным и будет состоять из ребер нулевого веса, где веса заданы преобразованной матрицей. Это паросочетание является оптимальным, и его вес, вычисленный по исходной матрице, равен 12. § 12.5. ВЕРШИННЫЕ ПОКРЫТИЯ И ПАРОСОЧЕТАНИЯ Подмножество В множества вершин V графа G = (V,E) называется вершинным покрытием, если любое ребро этого графа инцидентно хотя бы одной вершине из множества В. Вершинное покрытие состоящее из наименьшего числа вершин называется наименьшим. Мощность наименьшего
324 Глава 12. Паросочетания в двудольных графах вершинного покрытия графа G называется числом вершинного покрытия и обозначается βο(β). Рис. 91 Нетрудно видеть, что в графе, изображенном на рис. 91, множества В\ = {х\,у\,хъ,уз,Х4,уа} и В2 = {х\,Х2,У2} являются вершинными покрытиями. При этом В2 наименьшее, а В\ минимальное по включению. Задача построения в заданном графе наименьшего вершинного покрытия ЛГР-полна [16]. Однако в случае двудольных графов эта задача является легкорешаемой. Оказывается, что для двудольных графов мощность наименьшего вершинного покрытия в точности равна мощности наибольшего паросочетания, а само наименьшее вершинное покрытие может быть построено с помощью алгоритма Хопкрофта-Карпа. Обычно через ol\{G) в теории графов обозначается число паросочетания графа G — число ребер в наибольшем паросочетании. Теорема 12.9. В произвольном двудольном графе G = = (Χ,Ε,Υ) число вершинного покрытия βο(ϋ) равно числу паросочетания a\(G). Доказательство. Докажем вначале неравенство a\(G) ^ ^ 0o(G). Пусть Μ — произвольное паросочетание, а В — произвольное вершинное покрытие. Для каждого ребра е = vw e € Μ через /(e) обозначим ту из вершин υ или w, которая входит в В, а если они обе лежат в В, то любую из них. Поскольку Μ — паросочетание, то /(e) φ /(#), если ребра е и g различны. Тем самым / : Μ —> В — инъективное отображение множества Μ в В. При этом \М\ = |/(М)| ^ |Б|.
§ 12.5. Вершинные покрытия и паросочетания 325 Следовательно, любое вершинное покрытие графа содержит не меньше вершин, чем количество ребер в любом паросоче- тании. Отсюда ai{G) ^ βο{β). Заметим, что это неравенство доказано для произвольных графов, а не только для двудольных. Докажем обратное неравенство. Пусть Μ — наибольшее паросочетание в двудольном графе G = (Χ,Ε,Υ). Пусть е = = ху — произвольное ребро из М. Назовем вершину у от- меченной, если в G существует М-цепь, оканчивающаяся в у (см. § 12.2). Если такой цепи не существует, то считаем отмеченной вершину х. Множество всех отмеченных вершин обозначим В. Из построения следует, что \М\ = |J5|. Докажем, что В — вершинное покрытие. Пусть д = ху — произвольное ребро графа и вершина χ не входит в В. Проверим, что тогда вершина у принадлежит В. Если рассматриваемое ребро д является темным, т. е. входит в паросочетание М, то непосредственно из построения получаем, что у € В. Пусть теперь ребро д — светлое. Случай 1. Вершина χ свободная. Тогда вершина у является насыщенной, так как иначе цепь Ρ : #,д,у была бы М-чере- дующейся, что невозможно, так как Μ — наибольшее паросочетание. Значит, цепь Ρ является М-цепью. Так как вершина у насыщенна, то существует темное ребро е* = х*у, инцидентное у. Поскольку существует М-цепь, оканчивающаяся в у (это цепь Р), то при рассмотрении ребра е* вершина у была отмечена, т. е. у € В. Случай 2. Вершина χ насыщенна. Тогда существует темное ребро д* = ху*, инцидентное х. Так как χ /пВ, то у* € Б, т. е. существует М-цепь Q, оканчивающаяся в у*. Но тогда цепь Q U g* U д является М-цепью, оканчивающейся в вершине у, и так как у насыщенная вершина, то она лежит в В. Тем самым доказано, что построенное множество В является вершинным покрытием, отсюда βο{ϋ) ^ αι((?), что завершает доказательство теоремы. D Нетрудно понять, что описанное в доказательстве теоремы множество В является наименьшим вершинным покрыти-
326 Глава 12. Паросочетания в двудольных графах ем, ибо его мощность равна мощности наибольшего паросочетания. Для построения наименьшего вершинного покрытия используем алгоритм Хопкрофта-Карпа. Рассмотрим последнюю фазу работы этого алгоритма, т. е. ту фазу, в которой не будет найдена ни одна М-чередующаяся цепь. Пусть X* и У* — все вершины, помеченные в ходе поиска, т.е. при построении вспомогательного графа G(M). Тогда (X \ X*V) U У* является наименьшим вершинным покрытием графа G. Для доказательства последнего факта, достаточно заметить, что это множество совпадает с множеством В, описанным при доказательстве предыдущей теоремы. Действительно, пусть е = ху — произвольное темное ребро, т.е. е входит в текущее паросочетание М. Так как ни одной М-чередующейся цепи не существует, то Μ является наибольшим паросочетанием. Если у € У*, то из правил поиска следует, что существует М-цепь, оканчивающаяся в у. А если у & У*, то и χ g X*, ибо насыщенные вершины из X помечаются в ходе поиска только из им смежных насыщенных вершин из У. Значит, в этом случае χ € X \ X*, что завершает обоснование равенства В = (X \ X*V) U У*. Например, в графе, показанном на рис. 91, паросочетание Μ = = {хгУ1,Х2Уз1хзУ2} является наибольшим (кстати, оно может быть построено алгоритмом Хопкрофта-Карпа в первой же фазе). Поиск в последней фазе алгоритма Хопкрофта-Карпа даст дерево х4-2/2-#з, т.е., X* = {χ3ιΧ4},Υ* = {2/2}· Отсюда множество {#ι,Χ2>2/2} является наименьшим вершинным покрытием графа.
Глава 13 ЗАДАЧА КОММИВОЯЖЕРА § 13.1. ОСНОВНЫЕ ПОНЯТИЯ Все задачи, рассмотренные нами в предыдущих главах, имеют одну общую черту: для них известны (и были нами рассмотрены) алгоритмы решения, имеющие полиномиальную сложность. Однако для очень большого числа естественно возникающих задач оптимизации на графах эффективных (т.е. имеющих полиномиальную сложность) алгоритмов до сих пор не найдено, но одновременно доказано, что эти задачи в некотором смысле вызывают определенные сложности. Назовем такие задачи труднорешаемыми. Имеются веские доводы, позволяющие предположить, что для труднорешаемых задач эффективных алгоритмов решения не существует. Рассмотрение возникающих здесь проблем выходит за рамки данной книги, и мы можем лишь порекомендовать читателям книгу [18], посвященную труднорешаемым задачам. А в этой главе мы рассмотрим методы решения одной из таких задач — задачи коммивояжера. Пусть дан обыкновенный связный граф. Цикл, включающий все вершины графа, называется гамильтоновым. Отметим, что задача о том, существует или нет в данном графе гамильтонов цикл, является труднорешаемой (см. [18]). Задача коммивояжера формулируется следующим образом. В данном обыкновенном взвешенном графе найти гамильтонов цикл наименьшего веса, где вес цикла определяется как сумма весов входящих в него ребер.
328 Глава 13. Задача коммивояжера Разберем пример, поясняющий такое название задачи. Предположим, что некоторому коммивояжеру требуется посетить каждый город в пределах конкретной зоны обслуживания, побывав в них ровно по одному разу, и возвратиться домой. Естественно, что ему хотелось бы выбрать такой порядок обхода клиентов, при котором его путь был бы возможно короче. Построим взвешенный граф G = (V,i?,c), в котором каждая вершина соответствует некоторому городу, а веса ребер равны расстояниям между соответствующими городами. Га- мильтонов цикл наименьшего веса в этом графе дает желаемый маршрут для коммивояжера. Задача коммивояжера (далее — ЗК) также относится к классу труднорешаемых. Известно, что ЗК остается трудноре- шаемой и в том случае, когда граф является полным, а матрица весов А удовлетворяет неравенству треугольника, т. е. А[г;,гу] ^ Α[υ,ω] + А[и,гу] для всех u, v,w € V. Более того, ЗК остается труднорешаемой и в классе евклидовых графов, т. е. графов, вершины которых являются точками евклидового пространства, а веса ребер равны расстояниям между соответствующими точками. Отметим, что если веса всех ребер графа увеличить на одно и то же число, то гамильтонов цикл наименьшего веса в графе с измененными весами будет решением ЗК и для исходного графа. Следовательно, не ограничивая общности, можно считать, что веса всех ребер данного графа неотрицательны. Напомним, что матрица весов неориентированного графа симметрична. Этот факт будет использоваться нами при доказательстве некоторых теорем без специального упоминания. Для удобства гамильтонов цикл будем называть маршрутом коммивояжера, а маршрут с наименьшим весом — оптимальным маршрутом.
§ 13.2. Алгоритм отыскания гамильтоновых циклон 329 § 13.2. АЛГОРИТМ ОТЫСКАНИЯ ГАМИЛЬТОНОВЫХ ЦИКЛОВ Пусть G — произвольный η-граф. Опишем алгоритм, позволяющий найти в графе G все гамильтоновы циклы или выдать сообщение, что таких циклов нет. Пусть vo — произвольная вершина графа G. Рассмотрим некоторый гамильтов цикл v0 = ui,u2,...,un,un+1 = v0. Удалив из этого цикла ребро unvo, мы получим максимальную простую цепь V0 = t*i,U2,...,Un» в которой начальная вершина vq = щ смежна с конечной вершиной ип. Нетрудно понять, что если мы научимся строить все максимальные простые цепи, имеющие начало в вершине vq, to задача о нахождении гамильтоновых циклов будет решена. В самом деле, пусть Ρ : vo = ui,U2,...,u* — максимальная простая цепь с началом в вершине vo. Если к = η и вершина щ смежна с вершиной υ0, то, добавляя к цепи Ρ ребро UkVQ, мы получим гамильтонов цикл. Пусть Μ — множество всех простых цепей, имеющих начало в вершине vq. Для произвольных цепей P,Q е Μ положим Ρ ^ Q, если цепь Ρ является началом цепи Q. Ясно, что отношение ^ на множестве Μ является отношением частичного порядка. Максимальные элементы частично упорядоченного множества Μ мы назвали выше максимальными простыми цепями с началом в вершине vq. Алгоритм, позволяющий перечислить по одному разу все гамильтоновы циклы графа G, многократно выполняет следующую работу: имея текущую простую цепь P:v0 = «o,ui,...,Ufc_i, он по очереди добавляет к ней новые вершины, продолжая ее до всевозможных максимальных простых цепей с началом в вершине vq.
330 Глава 13. Задача коммивояжера Договоримся об обозначениях. Вершины текущей простой цепи будем хранить в массиве χ длины η — 1 (поскольку начальная вершина щ зафиксирована, хранить ее в массиве χ не надо). В процессе работы алгоритма каждая вершина в каждый текущий момент может находиться в одном из двух состояний: быть включенной или быть невключенной. Вершина считается включенной в текущий момент, если и только если она включена в текущую простую цепь. Массив status длины η позволит отличать включенные вершины от невключен- ных: в любой текущий момент status[v] = 1, если вершина υ включена, и status[v] = 0, если вершина υ невключена. Если текущая простая цепь имеет вид ito,s[l],a?[2],...,a?[fc-l], то через Sk для k ^ 1 обозначим множество всех вершин, которые можно использовать для продолжения этой цепи. Ясно, что Sk состоит из всех невключенных вершин, смежных с вершиной х[к — 1]. Разумеется, Si в начале работы алгоритма совпадает с множеством вершин Zis£[v0], смежных с ν0. Рассмотрим теперь следующую рекурсивную процедуру. 1. procedure HamiltonianjCycles(k); 2. begin 3. for у е Sk do 4. if к = η — 1 and у смежна с v0 then 5. ii;ri£e(i;o,#[l],:r[2],... ,#[n — 2],?/,υο) 6. else 7. begin 8. status[y) := 1; Sk := Sk \ {y}', 9. x[k] := y\ 10. Sk+i := {v\v e Hst[y] и status[v] = 0}; 11. Hamiltonian_Cycles(k + 1); 12. status[x[k]] := 0 13. end 14. end. Указанная процедура методично перебирает все простые цепи, являющиеся продолжениями простой цепи Ρ : υο,#[1],...
§ 13.3. Алгоритмы решения задачи коммивояжера 331 ... ,х[к — 1], добавляя по очереди новые вершины. Если найдена максимальная простая цепь, то происходит возврат, т. е. из максимальной цепи отбрасывается одна или несколько последних вершин (конечно, в случае, когда найденная максимальная простая цепь содержится в гамильтоновом цикле, перед возвратом этот цикл выводится на печать). При этом status[v) принимает значение 0 для каждой из отброшенных вершин v. Алгоритм, реализованный в данной процедуре, относят к классу алгоритмов с возвратом. Теперь легко описать алгоритм, перечисляющий все га- мильтоновы циклы, если они имеются в графе G. Алгоритм 13.1 1. begin 2. status[vo] = 1; Si := list[vo]\ 3. for.υ e V \ {v0} do status[v] := 0; 4. HamiltonianjCycles(l) 5. end. Указанный алгоритм полным перебором находит и выводит на печать все гамильтоновы циклы графа G, рассматривая вершину vq в качестве начальной. Корректность этого алгоритма очевидна. Ясно, что алгоритм экспоненциален и может быть реально применен к графам с весьма малым числом вершин. § 13.3. АЛГОРИТМЫ РЕШЕНИЯ ЗАДАЧИ КОММИВОЯЖЕРА С ГАРАНТИРОВАННОЙ ОЦЕНКОЙ ТОЧНОСТИ Один из возможных подходов к труднорешаемым задачам заключается в построении алгоритмов полиномиальной сложности для получения «хорошего», но, возможно, не оптимального результата. Сразу же возникает вопрос: «Как сильно отличается найденное решение от оптимального?» Обычно легче сконструировать быстрый алгоритм, дающий правдоподобное решение, чем оценить его погрешность. Рассмотрим, например, простейший алгоритм построения маршрута коммивояжера, реализующий «жадный» алгоритм и называемый Nearestjuertex, или Ближайший сосед.
332 Глава 13. Задача коммивояжера В качестве начальной вершины выбираем произвольную вершину и объявляем ее последней включенной в маршрут. Далее, пусть ν — последняя включенная в маршрут вершина. Среди всех еще не включенных в маршрут вершин выбираем ближайшую к ν вершину w, включаем w в маршрут после вершины ν и объявляем w последней включенной вершиной. Если все вершины включены в маршрут, то возвращаемся в исходную вершину. Изложенный алгоритм легко реализовать так, чтобы он имел сложность 0(п2). Понятно, что этот алгоритм иногда может находить оптимальный маршрут, но так будет далеко не всегда. Оценку возможной ошибки дает следующая Теорема 13.1. Пусть G = (V,J£,c) — полный взвешенный граф, матрица весов которого неотрицательна и удовлетворяет неравенству треугольника. Пусть Nvt(G) — маршрут коммивояжера, построенный алгоритмом Nearest_vertex, Opt(G) — оптимальный маршрут, а c(Nvt(G)) и c(Opt(G)) — их веса. Тогда c(Nvt(G)) < \([logn\ + 1) · c(Opt(G)). Доказательство данной теоремы можно найти в [49]. Эта теорема дает только верхнюю оценку отношения веса решения Nvt(G) к весу оптимального решения Opt(G) и не говорит о том, насколько плохим на самом деле может быть такое отношение. Имеются примеры графов, для которых оно больше чем |logn. Таким образом, алгоритм Nearestjuertex может иногда давать решения очень далекие от оптимальных. Однако можно получить лучшие результаты, используя чуть более искусную стратегию. Так, алгоритм Nearestjin- sert, или Ближайшая вставка, начиная с «цикла», состоящего из одной вершины, шаг за шагом наращивает растущий цикл в полном графе до тех пор, пока он не включит в себя все вершины графа. Пусть Τ CV. Для произвольной вершины ν eV положим d(v,T) = min{c{v,w)\w Ε Г}.
§ 13.3. Алгоритмы решения задачи коммивояжера 333 Число d(v,T) естественно назвать расстоянием от вершины ν до множества Т. Неформальное описание этого алгоритма выглядит следующим образом: 1) произвольную вершину ν е V объявить текущим маршрутом Г; 2) если все вершины графа содержатся в Г, то СТОП (Т — маршрут коммивояжера); 3) иначе, среди всех вершин, не входящих в текущий маршрут Т, найти такую вершину ν, для которой величина d(v,T) минимальна (вершина ν ближе всего находится к Т). Пусть w — вершина из Г, для которой d(v,T) = c(v,w), и и — вершина, следующая за w в маршруте Т; 4) добавить вершину ν в текущий маршрут Г, вставив ее между w и и. Перейти на шаг 2. Приведем формализованное изложение этого алгоритма. Текущий маршрут удобно описывать массивом next, где next[v] дает имя вершины, которая следует за г; в данном маршруте. Пусть Τ — множество вершин, включенных в маршрут. Для каждой вершины ν е V \ Τ расстояние от ν до Τ будем хранить в массиве с именем d. Значение near[v] (ν G V\T) дает имя вершины w G V\T, для которой выполняется равенство c{w,v) = d[v]. Иначе говоря, вершина near[v] ближе всего расположена к ν среди всех вершин множества Т. Введение массивов d и near позволяет реализовать алгоритм Near est „insert так, чтобы он имел сложность 0(п2). Такой прием был применен нами ранее в алгоритме Ярника-Прима- Дейкстры. Через Ρ обозначается множество вершин, не входящих в текущий маршрут. Функция Мгп(Р) дает имя вершины ν е е Р, для которой значение d[v] минимально. Алгоритм 13.2 Nearest_insert Вход: Полный взвешенный граф G = (V,£,c), заданный матрицей весов А[\..п, 1..п], причем Α[ν,υ] = 0 для всех υ G V. Выход: Маршрут коммивояжера, заданный массивом next [l..n], S — вес найденного маршрута.
334 Глава 13. Задача коммивояжера 1. begin 2. v\ := произвольная вершина из V; 3. next[vi] :=vX] S := 0; P:=V\ {νχ}\ 4. for υ G Ρ do 5. begin 6. d[v] := c(v,v\)\ near[v] := v\\ 7. end; 8. for k := 2 to η do 9. begin 10. vfc := Min{P)\ P:=P\ {vk}\ 11. it; := near[i;fc]; w := nexifii;]; 12. пе^[гу] := Vk\ next[vk] := w; 13. S := S + c(ii;,?;fc) + c(i;fc,w) -c(ti7,u); 14. for ν e Ρ do 15. if c(v,Vfc) < d[v] then 16. begin 17. d[v] := c(i;,i;fc); nearfi;] := ν*; 18. end 19. end 20. end. Алгоритм имеет следующую структуру. В строках 2-3 инициализируется маршрут, состоящий из одной вершины v\. В строках 4-7 задаются начальные значения массивов d и near. В основном цикле 8-19 наращивается текущий маршрут. В строке 11 определяются те вершины, между которыми будет вставлена очередная вершина ν*. В строке 12 осуществляется эта вставка. Отметим, что вершина Vk добавляется сразу после ближайшей к ней вершине w. Это означает, что в маршрут добавляются ребра гмь, VkU и удаляется ребро wu. Поэтому вес S маршрута пересчитывается так, как это указано в строке 13. В цикле 14-18 пересчитываются значения массивов d и near. Иллюстрирует работу алгоритма 13.2 пример, изображенный на рис. 92. Состояние текущего маршрута дано после прохождения основного цикла в строках 8-19. Маршрут коммивояжера, найденный алгоритмом, имеет вес 26, в то время как вес оптимального маршрута
§ 13.3. Алгоритмы решения задачи коммивояжера 335 ^1,г;2,г;з,г;4,г;1 равен 25. Интересно отметить, что в этом примере более грубый алгоритм Nearest_uertex тем не менее находит именно оптимальный маршрут. [ k 2 3 1 4 текущий маршрут VI V\,V2,V\ ^1,^2,^3, VI V\, 172,^4,^3,^1 1>4 8 ϋ8 Рис. 92 Поскольку каждая итерация цикла 8-19 требует порядка η — к операций, то справедлива Теорема 13.2. Алгоритм Near est Jinsert имеет сложность 0(п2). Оказывается, что алгоритм Nearest Jinsert, несмотря на свою простоту, обладает удивительным свойством. Теорема 13.3. Пусть G = (V,E,c) — полный неориентированный граф, матрица весов которого неотрицательна и удовлетворяет неравенству треугольника. Пусть Nins(G) — маршрут коммивояжера, построенный алгоритмом Nearest_insert, Opt(G) — оптимальный маршрут, a c(Nins(G)) и c(Opt(G)) — их веса. Тогда c{Nins(G)) ^ 2c(Opt(G)). Доказательство. Пусть νι,...,νη — последовательность вершин графа G, занумерованных в том порядке, в котором они добавлялись в текущий маршрут алгоритмом
336 Глава 13. Задача коммивояжера NearestJnsert. Обозначим через R множество ребер, входящих в Opt(G). Мы будем доказывать теорему путем построения взаимно однозначного соответствия между вершинами vi,...,vn и ребрами из R таким образом, чтобы стоимость включения вершины ν* в маршрут Nins(G) не превосходила удвоенной стоимости ребра из R, соответствующего ν*. Поставим в соответствие вершине ν\ одно (любое) из двух инцидентных vi ребер, имеющихся в Opt(G). Обозначим это ребро через е\. Пусть Ri = R \ е\. Тогда граф Η = (V,Ri) состоит ровно из одной компоненты связности, являющейся цепью, и в этой компоненте содержится вершина vi. Кроме того, стоимость включения νχ в текущий маршрут равна нулю, что меньше или равно 2с(е\). Пусть для вершин vi,...,Vk-i выбраны ребра ei,..., еь-\ из R так, что выполняются условия: \) вгф ej при l^i<j^k — l\ 2) Ri = Ri_i \ ei для любого г = 2,..., к — 1; 3) граф Hk-i = (V, Rk-i) состоит ровно из к — 1 компонент связности, которые являются цепями и в каждой из которых имеется точно по одной вершине из числа вершин vi,..., Vk-\. Подберем ребро е* для вершины ν* так, чтобы выполнялись все эти условия. Пусть в той компоненте связности #*_ι, которая содержит ν*, содержится вершина ν», где г < к. Тогда имеется ровно одно ребро, инцидентное Vi и лежащее на цепи, соединяющей ν* и ν*. Это ребро поставим в соответствие вершине ν* и обозначим его через е*. Заметим, что оно инцидентно точно одной вершине из множества {νι,.,.,ν*}, a именно Vi. Положим Я* = Rk-ι \ е* и #* = (У,Д*). Легко видеть, что полученный граф имеет ровно к компонент связности (цепей) и в каждой из них имеется ровно по одной вершине из множества {νι,.,.,ν*}. Оценим теперь стоимость включения ν* в текущий маршрут. Пусть Vk включается после вершины w и перед вершиной и. Стоимость включения ν* в маршрут равна (см. строку 13 алгоритма) c(w, Vk) + c(vb и) - c(w, и).
§ 13.3. Алгоритмы решения задачи коммивояжера 337 Поскольку алгоритм выбирает для включения вершину, ближайшую к текущему маршруту, а ребро ек инцидентно точно одной из ранее выбранных вершин, справедливо неравенство c(w,vk) <:с(ек). Из этого неравенства и неравенства треугольника получаем c(yk,и) ^ с(и, w) + c(w, Vk) ^ c(u, w) + c(ek). Отсюда выводим c{w, vk) + c{vk,u) 4: c(w,u) + 2c(efe), что эквивалентно соотношению c{w, vk) + c{vkl u) - c{w, и) ^ 2c(ek). Последнее неравенство означает, что стоимость добавления новой вершины в маршрут не превосходит удвоенного веса ребра, соответствующего этой вершине. Поскольку вес маршрута Nins(G) равен сумме стоимостей включения вершин, справедливо неравенство c(Nins(G)) < 2c(Opt(G)). О Замечание. Если в графе существует вершина, которой инцидентны только ребра положительного веса, то справедливо неравенство c(Nins(G)) < 2c(Opt(G)). Для доказательства достаточно взять эту вершину в качестве v\, и тогда уже на первом шаге стоимость включения (она равна нулю) строго меньше удвоенного веса ребра е\. Разберем еще один любопытный алгоритм построения маршрута коммивояжера, также имеющий гарантированную оценку точности. Напомним, что замкнутая цепь в связном графе называется эйлеровой цепью, если она включает каждое ребро графа ровно один раз. Пусть G = (VyE) — полный граф, Τ — остовное дерево графа G. Построим граф Η на том же множестве вершин V, используя две копии каждого ребра из ЕТ. Степени всех вершин графа Η четны, поэтому в Η существует эйлерова цепь Р. Выпишем все вершины υ из У ровно по одному
338 Глава 13. Задача коммивояжера разу в том порядке, в котором они встречаются в Р. Получим некоторую последовательность ΐ7ι,...,ΐ7η. Тогда цикл ^ь ΐ7ιг;2,г;2,... ,1^п?^п^ь^1 образует маршрут коммивояжера в графе G. Будем говорить, что этот маршрут коммивояжера вложен в эйлерову цепь Р. Можно сказать, что минимальный остов графа является в некотором смысле приближением оптимального маршрута коммивояжера. Действительно, если в минимальном остове все вершины имеют степень не более двух, то этот остов представляет собой цепь, включающую все вершины графа. Остается дополнить эту цепь одним-единственным ребром для того, чтобы получить оптимальный маршрут коммивояжера. Конечно, такие остовы существуют редко, но, тем не менее, можно попытаться переделать произвольный минимальный остов в приемлемый маршрут коммивояжера. Именно на этой идее базируется алгоритм Minspantreetravelling (от англ. minimal spanning tree travailing) или Остовный обход для построения маршрута коммивояжера в полном взвешенном графе G = = (V,E,c). Приведем сначала неформальное изложение этого алгоритма: 1) построить минимальное остовное дерево Τ графа G; 2) построить граф Я, используя две копии каждого ребра из ЕТ, и найти в Η эйлерову цепь Р; 3) построить маршрут коммивояжера, вложенный в эйлерову цепь Р. В формализованной записи алгоритма Minspantreetravelling без подробного описания используется процедура Ostov(G), которая строит минимальное остовное дерево Τ графа G. Считаем, что граф Η получен из Τ удвоением каждого ребра. Процедура Eiler(H) строит эйлеров маршрут, представленный вершинами в стеке SRes. Маршрут коммивояжера, вложенный в эйлерову цепь, представлен массивом mk, где mk[i] дает имя г-й вершины в маршруте коммивояжера. Массив mark длины η + 1 необходим для того, чтобы включать соответствующую вершину в маршрут коммивояжера лишь при первом ее появлении в стеке SRes. При этом первая и последняя вершины совпадают.
§ 13 3. Алгоритмы решения задачи коммивояжера 339 Алгоритм 13.3 Minspantreetravelling Вход: полный взвешенный граф G — (V,E,c), заданный матрицей весов j4[l..n, l..n], причем Α[ν, ν] = 0 для любых υ € V. Выход: маршрут коммивояжера, заданный массивом mk[l.. ..(η 4-1)], S — вес этого маршрута. 1. begin 2. Ostov(G)\ 3. Eiler{H)\ г := 1; 4. for v e V do mark[v] := 0; 5. while SRes φ 0 do 6. begin 7. ν <= SRes; 8. if mark[v] = 0 then 9. begin 10. mk[i] := v\ г = г + 1; mark[v] := 1; 11. end; 12. end; 13. S := 0; mk[n + 1] := mfc[l]; 14. for г := 1 to η do 5 := 5 + i4[mfc[t], mk[i + 1]]; 15. end. Теорема 13.4. Алгоритм Minspantreetravelling имеет сложность 0(п2). Доказательство. Напомним, что минимальный остов можно построить за время 0(п2), если использовать алгоритм Ярника-Прима-Дейкстры, следовательно, процедура Ostov(G) может быть реализована со сложностью 0(п2). Процедура Eiler(H) имеет сложность 0{т), где т — число ребер в графе Я. Так как Η получен из остова, то т = 2(п —1). Поэтому процедура построения эйлерова маршрута здесь имеет сложность 0(п). Количество записей в списке SRes пропорционально т. Следовательно, сложность цикла 5-10 есть 0(п). Отсюда и вытекает оценка сложности всего алгоритма. D Вернемся к графу, приведенному ранее на рис. 92. Возьмем минимальное остовное дерево Τ этого графа, которое порождается ребрами у\У21У2Уз>ЩЩ· (В данном графе есть еще
340 Глава 13. Задача коммивояжера одно минимальное остовное дерево.) Дальнейший результат зависит от того, каким будет эйлеров маршрут в графе Н. Пусть, например, выбран маршрут ι;ι,ι;4,ι;ι,ι;2,ι;3,ν2»νι· Тогда маршрут коммивояжера ι;ι,ι;4,ι;2,ι;3,ι;ι, вписанный в этот эйлеров маршрут, имеет вес 29. Если в Я взять эйлеров маршрут i7i,V2,V3>V2,i;i,i;4,i;i, то получим оптимальный маршрут коммивояжера ^1,172,^3,174,^1, имеющий вес 25. Отметим, что алгоритм Minspantreetravelling имеет такую же оценку точности, как и алгоритм Near est Jinsert. Теорема 13.5. Пусть G = (V, Ε, с) — полный взвешенный граф, матрица весов которого неотрицательна и удовлетворяет неравенству треугольника. Пусть Mstt(G) — маршрут коммивояжера, построенный алгоритмом Minspantreetravelling, Opt(G) — оптимальный маршрут, а 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). Пусть ΐ7ι,...,ι;η,ι;ι — последовательность вершин маршрута коммивояжера, вписанного в эйлеров маршрут. Тогда c(Mstt(G)) =c(i7i,i72) +c(i72,i73) Η + c(vn,νι). Для произвольных последовательных вершин vk и Vk+i в маршруте коммивояжера через ιΐ7ι,ΐϋ2,.. · ,wr обозначим все вершины в эйлеровом маршруте, стоящие между ними, включая их самих, т.е. w\ = Vk,wr = Vk+i- Из неравенства треугольника следует, что c(vkivk+i) *ζ c(wuw2) + -- + c(wr-i,wr).
§ 13.4. Решение задачи коммивояжера 341 Суммируя эти неравенства по всем к = Ι,.,.,η и учитывая при этом, что вес эйлерова маршрута равен 2 · cmst(G)% получим c(Mstt(G)) ^ 2 - cmst(G). Отсюда и из неравенства (*) следует требуемый результат. D В заключение отметим, что известны более точные быстрые алгоритмы построения маршрута коммивояжера, чем рассмотренные нами. Например, алгоритм Кристофидеса, разработанный в 1976 году, получает маршрут коммивояжера, вес которого может быть не более чем в 1,5 раза больше веса оптимального маршрута. Алгоритмы Nearestjinsert и Minspantreetravelling известны исследователям давно, однако оценка их точности (теорема 13.3 и теорема 13.5) получены сравнительно недавно — в 1977 году в работе Розенкратца, Штерна и Льюиса. § 13.4. РЕШЕНИЕ ЗАДАЧИ КОММИВОЯЖЕРА МЕТОДОМ ВЕТВЕЙ И ГРАНИЦ Для решения многих труднорешаемых задач относительно успешным является применение метода ветвей и границ. Мы продемонстрируем теперь применение этого метода к задаче коммивояжера. Будем по-прежнему предполагать, что граф G = (V, Е, с) является полным и задан матрицей весов. Однако будем считать, что матрица весов не обязательно симметрична. Иначе говоря, будем считать, что граф G является ориентированным и взвешенным, т. е. является сетью. Маршрутом коммивояжера в ориентированном графе называется контур, включающий каждую вершину ровно по одному разу. Для полной сети с η вершинами имеется (п — 1)! вариантов маршрута коммивояжера. Естественно, что полный перебор всех вариантов является невозможным даже для не очень больших значений п. Метод ветвей и границ является хорошим способом сокращения полного перебора для получения оптимального решения. Представим процесс построения маршрута коммивояжера в виде построения двоичного корневого дерева решений,
342 Глава 13. Задача коммивояжера в котором каждой вершине χ соответствует некоторое подмножество М(х) множества всех маршрутов коммивояжера. Считаем, что корню дерева решений поставлено в соответствие множество всех маршрутов коммивояжера. Пусть χ — некоторая вершина этого дерева. Выберем дугу vw, которая входит хотя бы в один маршрут из М(х). Тогда множество М(х) разбивается на два непересекающихся подмножества, в одно из которых можно отнести все маршруты, содержащие дугу vw, а в другое — не содержащие ее. Будем считать, что первое из этих подмножеств соответствует левому сыну вершины х, а второе — правому. Тем самым описано (пока еще в общих чертах) правило ветвления. Вершина дерева решений, для которой строятся сыновья, будет называться активной. Главное достоинство метода ветвей и границ по сравнению с полным перебором заключается в том, что активными объявляются лишь те вершины, в которых может содержаться оптимальный маршрут. Следовательно, необходимо выработать правило активизации вершин, которое будет сводиться к правилу подсчета границ. Предположим, что для вершин дерева решений вычислено значение f(x) такое, что вес любого маршрута из множества М(х) не меньше чем f{x). Такое число f(x) называется нижней границей маршрутов множества М(х) или, короче, границей вершины х. Правило активизации вершин заключается в том, что из множества вершин, не имеющих сыновей, в качестве активной выбирается вершина с наименьшей нижней границей. Вершина, для которой построены оба сына, активной стать в дальнейшем не может. Процесс построения дерева решений продолжается до тех пор, пока активной не будет объявлена вершина х, для которой множество М(х) состоит из одного-единственного маршрута, а границы всех других вершин не меньше чем вес этого маршрута. Понятно, что тогда маршрут, содержащийся в М(х), является оптимальным. Остается сформулировать правила вычисления нижних границ. Процедуру вычитания из каждого элемента строки (соответственно столбца) минимального элемента этой же строки (столбца) назовем редукцией строки (редукцией
§ /3.4. Решение задачи коммивояжера 343 столбца). Процедуру, которая сначала осуществляет редукцию каждой строки, а затем в измененной матрице — редукцию всех столбцов, назовем редукцией матрицы, а полученную матрицу — редуцированной. Заметим, что редуцированная матрица неотрицательна, причем в каждой ее строке и каждом ее столбце имеется хотя бы один нулевой элемент. Лемма 1. Пусть Ρ — маршрут коммивояжера в сети G, с(Р) (соответственно d(P)) — вес этого маршрута, определяемый матрицей весов сети G (редуцированной матрицей), f — сумма всех констант, используемых при редукции. Тогда с(Р) = d(P) + /. Доказательство. Для всякого маршрута Ρ соответствующая последовательность весов дуг образует набор из η элементов матрицы весов. Этот набор характеризуется тем, что в каждой строке и каждом столбце матрицы содержится ровно по одному его элементу. Следовательно, каждый элемент набора модифицируется дважды. Сначала при редукции соответствующей строки, а затем — столбца. Кроме того, каждая константа, используемая при редукции, влияет ровно на один элемент набора. Отсюда следует заключение леммы. D Поскольку редуцированная матрица содержит только неотрицательные элементы, имеем d(P) ^ 0. Следовательно, с(Р) ^ /. Это означает, что величина / является нижней границей всех маршрутов коммивояжера для исходной нередуцированной матрицы весов. Тем самым получено правило вычисления нижней границы корневой вершины дерева решений. Это правило остается справедливым и для любой другой вершины дерева решений. Действительно, с каждой вершиной χ дерева решений однозначно связывается матрица, описывающая все возможные маршруты из М(х). Сумма всех констант, используемых при ее редукции, и нижняя граница отца вершины χ дают нужную границу вершины х. А именно справедлива Лемма 2. Пусть вершина χ является сыном вершины у в дереве решений, f(y) — нижняя граница вершины у и f — сумма всех констант, используемых при редукции
344 Глава 13. Задача коммивояжера матрицы, соответствующей вершине х. Тогда равенство f(x) = f(y) + f задает нижнюю границу f(x) вершины х. Изложенную схему метода ветвей и границ разберем на конкретном примере. Пусть сеть G = (VyE,c) задана матрицей весов Д которая представлена табл. а. Редуцированная матрица А представлена табл. Ь. В столбце g матрицы А указаны минимальные элементы для каждой строки. После их вычитания из соответствующих строк нули будут в каждой строке и в первых четырех столбцах. Минимальные элементы для новых столбцов указаны в строке h табл. а. После редукции столбцов получается табл. Ь. Общая сумма вычтенных элементов равна 32. Это число указано в пересечении строки h и столбца д. Следовательно, любой маршрут коммивояжера в сети G имеет вес не меньше чем 32. 1 2 3 4 5 h 12 3 4 5 оо 12 9 9 12 9 оо 8 19 15 6 0 оо 16 10 5 9 12 оо 16 15 7 13 23 оо 0 0 0 0 3 * 9 8 0 5 7 32 а) 1 2 3 4 5 s 12 3 4 5 оо 3 0 0 0 1 оо 0 11 4 6 0 оо 16 7 0 4 7 оо 8 8 0 6 16 оо 1 0 0 И 4 г 0 1 6 4 1 6 Ь) Перейдем теперь к постепенному построению корневого дерева поиска решения. Для ветвления в корневой вершине дерева решений нужно выбрать дугу vw и разбить все множество маршрутов на два непересекающихся подмножества, в
§ 13.4. Решение задачи коммивояжера 345 одно из которых включаются все маршруты, содержащие дугу vw, в другое — не содержащие эту дугу. Правило выбора такой дуги vw определяет по существу всю стратегию поиска оптимального маршрута. Выбор дуги vw означает, что маршруты из М(х) для левого сына χ не содержат других дуг, выходящих из v% и других дуг, входящих в w. Иначе говоря, из матрицы весов для левого сына можно удалить строку υ и столбец w. Кроме того, следует запретить возможность включения в маршрут дуги wv, для чего достаточно положить Α[ιι;,υ] = оо. Таким образом, размер матрицы весов левого сына уменьшается на единицу, по сравнению с размером матрицы весов отца. Поскольку маршруты из М(х) для правого сына χ запрещают лишь использовать дугу vw, то все изменения в матрице весов сводятся к тому, что нужно положить Α[υ,ιι;] = оо. Поэтому предпочтительно находить решение, двигаясь по левым, а не по правым сыновьям. Следовательно, дуга vw должна выбираться так, чтобы нижняя граница правого сына была как можно больше границы левого сына. В редуцированной табл. Ь на с. 344 в столбце г (соответственно строке s) указаны вторые минимальные по порядку числа соответствующих строк (столбцов). Правило выбора дуги vw можно сформулировать следующим образом: выбрать тот нуль в редуцированной матрице, для которого сумма значений элементов, находящихся на пересечении строки ν со столбцом г и столбца w со строкой s, наибольшая. Например, для нуля, находящегося в четвертой строке первого столбца, соответствующая сумма равна 5, а для нуля в первой строке и четвертом столбце — 11. Легко видеть, что это значение является наибольшим. Таким образом, разбиение множества всех маршрутов следует осуществить по дуге (1,4). На с. 346 табл. α и Ь представлены исходная и редуцированная матрицы весов левого сына корневой вершины, а табл. с — редуцированная матрица правого сь!на. Редукция матрицы правого сына заключалась лишь в вычитании числа 11 из четвертого столбца.
346 Глава 13. Задача коммивояжера Для удобства через хо обозначим корень дерева решений, через #оо — его левого сына, а через xq\ — правого. Если хь — некоторая вершина дерева решений, где к — последовательность из нулей и единиц, то левый сын вершины Xk получает индекс приписыванием справа к к значения 0, а правый — 1. Вспоминая, что границу вершины χ мы уже обозначали ранее через /(х), получаем f{xo) = 32, f(xoo) = 41, f(xoi) = 43. 2 3 4 5 h 12 3 5 1 оо 0 4 6 0 оо 7 оо 4 7 8 8 0 6 оо 10 0 4 9 0 о I 4 j 0 9 2 3 4 5 s 12 3 5 0 оо 0 0 5 0 оо 3 оо 0 3 0 7 0 6 оо 5 0 3 0 г 0 3 0 6 β) b) 1 2 3 4 5 s 12 3 4 5 оо 3 0 оо 0 1 оо 0 0 4 6 0 оо 5 7 0 4 7 оо 8 8 0 6 5 оо 10 0 5 4 г | 0 0 5 4 5 с) Сформулированное правило выбора нуля в редуцированной матрице позволяет надеяться (но не гарантирует), что граница правого сына увеличится больше всего. Отметим, что имеются и более сильные правила выбора дуги vw или, что то же самое, нуля в редуцированной матрице. После построения вершин х0о и χοι дерево решений выглядит так, как оно изображено на рис. 93, где в скобках рядом с именем вершины написано значение нижней границы. Ниже вершины дерева решений написан соответствующий вариант разбиения множества маршрутов, соответствующих данной вершине, а именно указана дуга, по которой производится разбиение.
§ 13.4. Решение задачи коммивояжера 347 *о(32) /\ *оо(41) *οι(43) Рис. 93 Поскольку вершина #0о имеет границу меньше, чем вершина #оъ теперь она становится активной. По описанному ранее правилу выбираем дугу (5,2), ибо нуль, стоящий в строке 5 и столбце 2, имеет наибольшую сумму соответствующих ему значений в строке s и столбце г (табл. 6, с. 346). 2 3 4 h 1 3. 5 0 0 оо 5 оо 3 оо 3 0 0 0 0 9 о со о 3 2 3 4 s 1 3 5 0 0 оо 2 оо 0 оо 3 0 2 3 0 г 0 2 3 а) Ь) 2 3 4 5 s 12 3 5 0 оо 0 0 5 0 оо 3 оо 0 3 0 1 оо 0 оо 10 0 0 г 0 3 0 1 с) Матрицы вершин #ооо и #οοι представлены на с. 347, где а) и Ь) — соответственно исходная и редуцированная матрицы вершины #ооо. а с) — редуцированная матрица вершины #οοι· Редукция матрицы #οοι состояла лишь в вычитании числа 6 из последней строки. Для нижних границ имеем равенства Д#ооо) = 44,/(#οοι) = 47. Процесс построения дерева решений рекомендуем далее отслеживать по таблицам на с. 347.
348 Глава 13. Задача коммивояжера Теперь придется вернуться назад по дереву решений, ибо активной становится вершина #οι· В табл. с, изображенной на с. 347, сразу несколько нулей имеют одинаковую сумму соответствующих элементов в столбцах s и г. Выберем для разбиения дугу (3,2). Нередуцированные матрицы сыновей вершины #οι изображены на рис. 33. Анализируя строки h и столбцы g обеих матриц, получаем f(xo\o) = 48 и /(хоп) = 48. 1 2 4 5 h 13 4 5 oo 0 oo 0 1 oo 0 4 0 7 oo 8 8 6 5 oo 0 0 0 0 9 0 0 0 5 5 о) 1 2 3 4 5 h 12 3 4 5 oo 3 0 oo 0 1 oo 0 0 4 6 oo oo 5 7 0 4 7 oo 8 8 0 6 5 oo 0 0 0 0 0 9 0 0 5 0 0 5 b) Следующей активной вершиной становится вершина яооо, редуцированная матрица которой 6), представлена на с. 347. В этой матрице два равноценных претендента: дуга (2,3) и дуга (4,5). Выберем для разбиения дугу (4,5). Получающиеся матрицы вершин #оооо и χοοοι представлены таблицами а) и Ь) на с. 349 соответственно. Обращаем внимание читателя на то, что здесь в матрице а) элемент (2,1) равен оо. Дело в том, что все маршруты в М(#0ооо) содержат дуги (1,4), (5,2) и (4,5). Никакой маршрут коммивояжера теперь не может содержать дугу (2,1). По этой причине элемент (2,1) в матрице приравнен к оо.
§ 13.4. Решение задачи коммивояжера 349 2 3 1 00 0 3 0 оо а) 2 3 4 1 0 2 оо 3 0 оо 3 5 ПО 0 оо Ь) Таблицей а) на с. 349 представлена редуцированная матрица вершины яоооо- Ясно, что /(хоооо) = /(яооо)+2 = 46. Здесь же для матрицы Ь) редукция сводится к вычитанию числа 3 из строки 4. Отсюда получаем равенство /(χοοοι) = 47. Наконец, активной становится вершина #оооо· Здесь выбор дуги не играет никакой роли. Есть только две возможности. Или сначала выбрать дугу (2,3) и, проводя разбиение по ней, на следующем шаге выбрать (3,1), или наоборот, сначала — (3,1), а затем — (2,3). Важным является лишь то, что при переходе к сыновьям границы левых сыновей не меняются, поэтому левые сыновья сразу становятся активными. Границы правых сыновей и в том и в другом случае равны оо, что означает отсутствие соответствующих маршрутов коммивояжера. Дерево решений, построенное нами, изображено на рис. 94. Поскольку активной теперь следует объявить вершину, содержащую один-единственный маршрут, алгоритм на этом заканчивает свою работу. *οι(43) (47) *ow *оп(48) W46)rf(*.*>*w47) <«> *»»и*б)413Л)*х, Рис. 94
350 Глава 13. Задача коммивояжера Итак, оптимальным в заданном графе является маршрут 1-4-5-2-3-1, вес которого равен 46. Отметим, что в данном примере мы исследовали всего 13 вершин дерева решений. Имеющиеся экспериментальные данные позволяют утверждать, что метод ветвей и границ для ЗК является разумной альтернативой полному перебору, ибо для случайной матрицы весов число исследуемых вершин дерева решений равно 0((1,26)п). Отметим особенности ЗК, позволившие реализовать метод ветвей и границ для ее решения. 1. Ветвление. Множество решений, представляемое вершинами дерева решений, можно разбить на попарно непересекающиеся множества. Каждое подмножество в этом разбиении представляется сыном исходной вершины в дереве решений. 2. Границы. Имеется алгоритм для вычисления нижней границы веса любого решения в данном подмножестве. Поскольку многие задачи дискретной оптимизации обладают двумя перечисленными свойствами, то метод ветвей и границ может применяться для их решения. При этом разбиение множества решений на каждом шаге может осуществляться и более чем на два непересекающихся подмножества, если для подмножеств имеется подходящий алгоритм для вычисления нижней границы входящих в них решений.
ЛИТЕРАТУРА 1. Абрахаме Д., Каверли Д. Анализ электрических сетей методом графов. — М.: Мир, 1967. 2. Адельсон-Вельский Г. М., Диниц Ε. Α., Карзанов А. В. Потоковые алгоритмы. — М.: Наука, 1975. 3. Айгнер М. Комбинаторная теория. — М.: Мир, 1982. 4. Андерсон Дж.А. Дискретная математика и комбинаторика. — М.: Изд. дом «Вильяме», 2003. 5. Асанов М.О. Дискретная оптимизация. — Екатеринбург: УралНАУКА, 1998. 6. Ахо Α., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. — М.: Мир, 1979. 7. Ахо Α., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. — М.: Изд. дом «Вильяме», 2000. 8. Басакер Р., Саати Т. Конечные графы и сети. — М.: Наука, 1974. 9. Белов В. В., Воробьев Е.М., Шаталов В.Е. Теория графов. — М.: Высш. шк., 1976. 10. Берж К. Теория графов и ее применения. — М.: ИЛ, 1962. 11. Биркгоф Г. Теория структур. — М.: Наука, 1984. 12. Болл У., Коксетер Г. Математические эссе и развлечения. — М.:Мир, 1986. 13. Вирт Н. Алгоритмы 4- структуры данных = программы. — М.: Мир, 1985. 14. Гантмахер Ф.Р. Теория матриц. — М.: Наука, 1966. 15. Гретцер Г. Общая теория решеток. — М.: Мир, 1982. 16. Грин Д., Кнут Д. Математические методы анализа алгоритмов. - М.: Мир, 1987. 17. Гудман С, Хидетниеми С. Введение в разработку и анализ алгоритмов. — М.: Мир, 1981. 18. Гэри М., Джонсон Д. Вычислительные машины и трудноре- шаемые задачи. — М.: Мир, 1982.
352 Литература 19. Листель Р. Теория графов. — Новосибирск: Издательство Ин-та математики, 2002. 20. Евстигнеев В. А. Применение теории графов в программировании. — М.: Наука, 1985. 21. Евстигнеев В.А., Касьянов В.Н. Теория графов: алгоритмы обработки деревьев. — Новосибирск: Наука, 1994. 22. Евстигнеев В.Α., Касьянов В.Н. Теория графов: алгоритмы обработки бесконтурных графов. — Новосибирск: Наука. Сиб. предприятие РАН, 1998. 23. Евстигнеев В. Α., Мельников Л. С. Задачи и упражнения по теории графов и комбинаторике. — Новосибирск: Издательство НГУ, 198L 24. Емеличев В. Α., Ковалев М. М., Кравцов М. К. Многогранники, графы, оптимизация. — М.: Наука, 1981. 25. Емеличев В.А., Мельников О. И., Сарванов В. И., Тышкевич Р. И. Лекции по теории графов. — М.: Наука, 1990. 26. Замбицкий Д. К., Лозовану Д. Д. Алгоритмы решения оптимизационных задач на сетях. — Кишинев: Штиинца, 1983. 27. Зыков А. А. Теория конечных графов. — Новосибирск: Наука, 1969. 28. Зыков А. А. Основы теории графов. — М.: Наука, 1987. 29. Камерон П.Дж., ван Линт Дж.Х. Теория графов, теория кодирования и блок-схемы. — М.: Наука, 1980. 30. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. - М.: МЦНМО, 1999. 31. Кнут Д. Искусство программирования для ЭВМ. Т. 1. Основные алгоритмы. — М.: Мир, 1976; перераб. издание: М.: Изд. дом «Вильяме», 2000. 32. Кнут Д. Искусство программирования для ЭВМ. Т. 2. Получисленные алгоритмы. — М.: Мир, 1977; перераб. издание: М.: Изд. дом «Вильяме», 2000. 33. Кнут Д. Искусство программирования для ЭВМ. Т. 3. Сортировка и поиск. — М.: Мир, 1978; перераб. издание: М. : Изд. дом «Вильяме», 2000. 34. Кристофидес Н. Теория графов. Алгоритмический подход. - М.: Мир, 1978. 35. Кофман А. Введение в прикладную комбинаторику. — М. : Наука, 1975.
Литература 353 36. Кук В., Бейз Г. Компьютерная математика. — М.: Наука, 1990. 37. Липский В. Комбинаторика для программистов. — М.: Мир, 1988. 38. Ловас Л., Пламмер М. Прикладные задачи теории графов. Теория паросочетаний в математике, физике, химии. — М.: Мир, 1998. 39. Майника Э. Алгоритмы оптимизации на сетях и графах. — М.: Мир, 1981. 40. Макконелл Дж. Основы современных алгоритмов. — М.: Техносфера, 2006. 41. Миркин Б. Г., Родин С. Н. Графы и гены. — М.: Наука, 1977. 42. Новиков Ф.А. Дискретная математика для программистов. - СПб.: Питер, 2000. 43. Окулов С. М., Пестов Α. Α., Пестов О. А. Информатика в задачах. — Киров: Вятский гос. пед. ун-т, 1998. 44. Оре О. Графы и их применение. — М.: Мир, 1965. 45. Оре О. Теория графов. — М.: Наука, 1980. 46. Пападимитриу X., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. — М.: Мир, 1985. 47. Папи Ф., Папи Ж. Дети и графы. — М.: Педагогика, 1974. 48. Перечислительные задачи комбинаторного анализа. — М.: Мир, 1979. 49. Рейнгольд Э., Нивергелът Ю., Део Н. Комбинаторные алгоритмы. Теория и практика. — М.: Мир, 1980. 50. Рингель Г. Теорема о раскраске карт. — М.: Мир. 1977. 51. Сачков В. И. Введение в комбинаторные методы дискретной математики. — М.: Наука, 1982. 52. Свами М., Тхуласираман К. Графы, сети и алгоритмы. — М.:Мир, 1984. 53. Сушков Ю.А. Графы зубчатых механизмов. — Ленинград: Машиностроение, 1983. 54. Tamm У. Теория графов. — М.: Мир, 1988. 55. Уилсон Р. Введение в теорию графов. — М.: Мир, 1977. 56. Филлипс Д., Гарсиа-Диас А. Методы анализа сетей. — М.: Мир, 1984. 57. Фляйшнер Г. Эйлеровы графы и смежные вопросы. — М. : Мир, 2002.
354 Литература 58. Форд Л. Р., Фалкерсон Д. Р. Потоки в сетях. — М.: Мир, 1966. 59. Хаггарти Р. Дискретная математика для программистов. — М.: Техносфера, 2005. 60. Харари Ф. Теория графов. — М.: Мир, 1973. 61. Харари Ф., Палмер Э. Перечисления графов. — М.: Мир, 1977. 62. Холл М. Комбинаторика. — М.: Мир, 1970. 63. Цветкович Д., Дуб М., Захс X. Спектры графов. Теория и приложения. — Киев: Наукова думка, 1984. 64. Handbook of Theoretical Computer Science. Vol. A: Algorithms and Complexity Theories. — North Holland Publ. Сотр., Amsterdam, 1990. 65. Read R. C. An Introduction to Chromatic Polynomials. J. of Comb. Theory, 4, 1968. P. 52-71. 66. Tarjan R. E. Data Structures and Network Algorithms. — Soc. for Idustr. and Applied Math., Philadelphia, Pensylvania, 1983. 67. Truemper K. Matroid Decomposition (Revised Edition). — Leibniz, Piano, Texas, 1998. 68. Welsh D. J. A. Matroid Theory. - New York Acad. Press, 1976.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ А Аксиома Штейница о замене 79 Аксиомы баз 78 независимости 78 ранговые 81 циклов 83 Алгоритм Борувки-Краскала 230 Дейкстры 246 Куна 310 Флойда 267 Форда-Беллмана 241 Форда-Фалкерсона 284 Хопкрофта-Карпа 295 Ярника-Прима-Дейкстры 234 венгерский 317 линейный 185 пирамидальной сортировки 195 полиномиальный 185 с возвратом 334 топологической сортировки 250 экспоненциальный 185 Атом решетки 59 Б База матроида 73 множества 73 Блок 31 висячий 38 В Вектор грани циклический 134 инцидентности 157 Величина потока 269 Вершина 6 висячая 9 изолированная 9 концевая 7 насыщенная относительно паросочетания 288 свободная относительно паросочетания 288 Вес остова 42 ребра 42, 228 элемента 91 Высота корневого дерева 191 Г Геометрия векторная проективная 69 комбинаторная 64 проективная 69 Грань плоского графа 132 Граф 6 (п,т)-граф 7 (п,т, А:)-граф 13 п-граф 7 ^-раскрашиваемый Mil
356 Предметный указатель ί-хроматический 161 Петерсена 137 взвешенный 228 вполне несвязный 9 гамильтонов 48 дважды помеченный 24 двойственный 153 двудольный 9 неразделимый 31 нулевой 9 обыкновенный 6 одноэлементный 9 ориентированный 18 ориентируемый 19, 20 планарный 131 плоский 131 полный 9 двудольный 9 полуэйлеров 45 помеченный 20 произвольно вычерчиваемый из вершины 46 связный 12 эйлеров 43 Графы гомеоморфные 137 д Дерево 27 бинарное 191 венгерское 311 глубинное 202 корневое 190 кратчайших путей 248 остовное 29 поиска 193 в ширину 222 растущее 230 решений 194 сортирующее 196 Диаграмма 6 Длина маршрута 12 ормаршрута 19 Дополнение 62 Дуга 18 обратная в цепи 274 прямая в цепи 274 Ж Жорданова кривая 130 3 Задача коммивояжера 183 о maxmin-пути 262 о кратчайшем пути 183, 238 о максимальном потоке 270 о минимальном остове 228 о наибольшем паросочетании 289 об остове минимального веса 42 оптимального назначения 183 И Изоморфизм графов 7 матроидов 94 Интервал решетки 57 Инцидентность 7 Источник 269 К Кобаза матроида 86 Компонента связности 13 сильной связности 213 Контур 19 Коцикл матроида 86
Предметный указатель 357 Л Лес 27 глубинный 202 остовный 29 остовный в графе 228 продолжаемый до минимального остова 229 растущий 230 Лист корневого дерева 190 матроида 64 Μ Маршрут 11 замкнутый 12 Матрица Кирхгофа 23 инцидентности графа 24 инцидентности орграфа 25 смежности 20 Матроид 64 бинарный 98 векторный над телом 79, 81 графический 94 двойственный 86 дискретный 88 кографический 94 обыкновенный 64, 72 разрезов 89 свободный 88 связный 119 столбцов 81 строк 81 трансверсальный 111 тривиальный 88 циклов 79 Метод критического пути 256 Многочлен характеристический 22 хроматический 169 Множество зависимое 73 независимое 73 ребер разрезающее 13 Мост 13 Η Неравенство полумодулярности 60 О Объединение матроидов 123 дизъюнктное 11, 119 подграфов 11 Окружение вершины 8 Оператор замыкания 63 Орграф 18 гамильтонов 53 орсвязный 19 полу гамильтонов 53 связный 18 сильно связный 19 топологически отсортированный 250 Ориентация графа 25 Орлемма о рукопожатиях 20 Ормаршрут 18 замкнутый 19 Орцепь 19 гамильтонова 53 простая 19 Орцикл 19 гамильтонов 53 Основание орграфа 18 Остов 29 минимальный 228 Отец 190 Отношение покрытия 57 связности 12 Очередь 189
358 Предметный указатель Π Паросочетание 111, 287 максимальное 288 наибольшее 288 полное 309 совершенное 309 Пересечение подграфов 11 Петля 7 Пирамида 196 частичная 197 Плоскость проективная дезаргова 71 Подграф 10 остовный 10 порожденный 10 пустой 10 Подматроид 80 Подмножество замкнутое 63 Подпространство матроида 64 Поиск в глубину 201 в графе 201 в ширину 219 Покрытие множества вершинное 113 Полустепень захода 20 исхода 20 Порождающее множество матроида 75 Последовательность степеней графа 50 Поток в сети 269 Потомок 190 Предгеометрия комбинаторная 64 Предок 190 Произведение подграфов 173 Пропускная способность разреза 273 Пространство коциклов бинарного матроида 101 разрезов 102 циклов 102 циклов бинарного матроида 101 Путь в сети 238 Ρ Раздувание матроида 80 Размер задачи 184 Размерность геометрическая 69 Разрез 13 в орграфе 272 минимальный 274 Ранг графа 30 матроида 74 множества 76 Раскраска графа 161 несобственная 180 Расстояние между вершинами 238 Ребро 6 ациклическое 14 висячее 9 древесное 201 кратное 6 обратное 202 поперечное 223 светлое относительно паросочетания 288 темное относительно паросочетания 288 циклическое 14 Редукция графа 10 хроматическая 169 Решетка 56 конечномерная геометрическая 61
Предметный указатель 359 модулярная 56 полумодулярная 58 с дополнениями 62 с относительными дополнениями 62 С Сеть 238 Система разрезов графа фундаментальная 102 коциклов фундаментальная 101 различных представителей 114 циклов фундаментальная 101 циклов графа фундаментальная 102 Сложность алгоритма временная 185 Смежность вершин 7 ребер 7 Стек 188 Степень вершины 8 Стоимость ребра 228 Сток 269 Стягивание ребра 152 Сумма матроидов 120 Сын 190 Τ Точка сочленения 31 Трансверсаль 113 независимая частичная 116 частичная 111 Турнир 53 У Укладка графа в пространстве 130 Уровень вершины в корневом дереве 191 Условие Жордана-Дедекинда 58 Φ Функция весовая 42 монотонная полумодулярная 107 размерности на решетке 59 хроматическая 168 ц Цепь 12 М-цепь 295 М-чередующаяся 291 /-дополняющая 274 /-ненасыщенная 279 в сети 274 гамильтонова 48 полуэйлерова 45 простая 12 эйлерова 43 Цикл 12 гамильтонов 48 матроида 73 Ч Число Стирлинга второго рода 175 первого рода 175 древовидности графа 127 покрытия матроида 125 упаковки матроида 124 хроматическое 161 цикломатическое 30
ОГЛАВЛЕНИЕ Предисловие ко второму изданию Предисловие к первому изданию Глава /. Основные понятия теории графов § 1.1. Основные определения § 1.2. Маршруты, связность, циклы и разрезы § 1.3. Ориентированные графы § 1.4. Матрицы, ассоциированные с графом Глава 2. Деревья § 2.1. Леса, деревья, остовы § 2.2. Блоки и точки сочленения § 2.3. Число остовов в связном обыкновенном графе . . Глава 3. Обходы графов § 3.1. Эйлеровы графы § 3.2. Гамильтоновы графы Глава 4. Матроиды § 4.1. Пол у модулярные решетки, условие Жордана- Дедекинда § 4.2. Конечномерные геометрические решетки и матроиды § 4.3. Основные понятия теории матроидов § 4.4. Различные аксиоматизации матроидов § 4.5. Двойственный матроид § 4.6. Жадный алгоритм § 4.7. Изоморфизмы матроидов § 4.8. Пространство циклов бинарного матроида . . . . § 4.9. Пространство циклов и пространство разрезов графа § 4.10. Монотонные полумодулярные функции. Индуцированный матроид § 4.11. Трансверсальные матроиды § 4.12. Дизъюнктное объединение и сумма матроидов
Оглавление 361 Глава 5. Планарность 129 § 5.1. Укладки графов, планарные графы 129 § 5.2. Формула Эйлера для плоских графов 132 § 5.3. Критерий планарности графа 135 § 5.4. Двойственные графы 152 Глава 6. Раскраски 160 § 6.1. Хроматические числа 160 § 6.2. Хроматические многочлены 167 § 6.3. Коэффициенты хроматических многочленов .... 175 Глава 7. Введение в алгоритмы 182 § 7.1. Алгоритмы и их сложность 183 § 7.2. Запись алгоритмов 186 § 7.3. Корневые и бинарные деревья 189 § 7.4. Сортировка массивов 193 Глава 8. Поиск в графе 200 § 8.1. Поиск в глубину 200 § 8.2. Алгоритм отыскания блоков и точек сочленения 205 § 8.3. Алгоритм отыскания компонент сильной связности в орграфе 211 § 8.4. Поиск в ширину 218 § 8.5. Алгоритм отыскания эйлеровой цепи в эйлеровом графе 223 Глава 9. Задача о минимальном остове 226 Глава 10. Пути в сетях 236 § 10.1. Постановка задачи 236 § 10.2. Общий случай. Алгоритм Форда-Беллмана .... 237 § 10.3. Случай неотрицательных весов. Алгоритм Дейкстры 242 § 10.4. Случай бесконтурной сети 247 § 10.5. Задача о максимальном пути и сетевые графики . 252 § 10.6. Задача о maxmin-пути 259 § 10.7. Задача о кратчайших путях между всеми парами вершин 263 Глава //. Задача о максимальном потоке 267 § 11.1. Основные понятия и результаты 267 § 11.2. Алгоритм Форда-Фалкерсона 275
362 Оглавление Глава 12. Паросочетания в двудольных графах 285 § 12.1. Основные понятия 285 § 12.2. Задача о наибольшем паросочетании. Алгоритм Хопкрофта-Карпа 287 § 12.3. Задача о полном паросочетании. Алгоритм Куна 306 § 12.4. Задача о назначениях. Венгерский алгоритм . . . .313 § 12.5. Вершинные покрытия и паросочетания 323 Глава 13. Задача коммивояжера 327 § 13.1. Основные понятия 327 § 13.2. Алгоритм отыскания гамильтоновых циклов .... 329 § 13.3. Алгоритмы решения задачи коммивояжера с гарантированной оценкой точности 331 § 13.4. Решение задачи коммивояжера методом ветвей и границ 341 Литература 351 Предметный указатель 355
Магаз Оразкимович АС АЛОВ Виталий Анатольевич БАРАНСКИЙ Вениамин Вольфович РАСИН ДИСКРЕТНАЯ МАТЕМАТИКА: ГРАФЫ, МАТРОИДЫ, АЛГОРИТМЫ Учебное пособие Издание второе, исправленное и дополненное Корректор Т. А. Кошелсва Верстка в ТеХ А. Г. Сандомирская Выпускающие Г. М. Матвеева, О. В. Шилкова ЛР№ 065466 от 21.10.97 Гигиенический сертификат 78.01.07.953.П.007216.04.10 от 21.04.2010 г., выдан ЦГСЭН в СПб Издательство «ЛАНЬ» lan@lpbl.spb.ru; www.lanbook.com 192029, Санкт-Петербург, Общественный пер., 5. Тел./факс: (812)412-29-35, 412-05-97, 412-92-72. Бесплатный звонок по России: 8-800-700-40-71 Подписано в печать 09.06.10. Бумага офсетная. Гарнитура Литературная. Формат 84xl08V32. Печать офсетная. Усл. п. л. 19,32. Тираж 1500 экз. Заказ №1306 Отпечатано в полном соответствии с качеством предоставленных диапозитивов ι ОАО «Издательско-полиграфическое предприятие «Правда Севера». 163002, г. Архангельск, пр. Новгородский, 32. Тел./факс (8182) 64-14-54, тел.: (8182) 65-37-65, 65-38-78, 20-50-52 www.ippps.ru, e-mail: zakaz@ippps.ru