Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы / Ответы на экзаменационные вопросы по дискретной математике.docx
Скачиваний:
235
Добавлен:
03.08.2020
Размер:
2.08 Mб
Скачать

Виды графов

Пустой граф — граф, в котором есть только вершины (нет рёбер и дуг).

Неориентированный граф (не орграф) — граф, содержащий только рёбра.

Ориентированный граф (орграф) — граф, содержащий только дуги.

Смешанный граф — граф, содержащий рёбра и дуги.

Ориентированный и неориентированный графы являются частными случаями смешанного.

Гамильтонов граф — граф, в котором есть гамильтонов цикл. (Далее подробнее.)

Полугамильтонов граф — граф, в котором есть гамильтонов маршрут (Далее подробнее.)

Эйлеров граф — граф, в котором существует цикл без повторения рёбер (такой цикл называют эйлеровым), обходящий все вершины графа. (Далее подробнее.)

Полуэйлеров граф — граф, в котором существует маршрут (эйлеров путь), обходящий все рёбра графа ровно один раз. (Далее подробнее.)

Существуют загадки типа «можно ли нарисовать данную фигуру, не отрывая ручку от бумаги», что и соответствует эйлерову или полуэйлерову графу.

Рисунок 4. а) — эйлеров граф, б) — полуэйлеров граф, в) — граф, не являющийся ни эйлеровым, ни полуэйлеровым.

Связный граф — граф, в котором для любых двух вершин есть путь из в .

Сильно связный (ориентированно связный) граф — ориентированный граф, в котором из одной любой вершины в любую другую имеется ориентированный путь.

Ациклический граф — граф без циклов.

Нормированный граф — ориентированный граф без циклов.

Простой граф — граф без петель и кратных рёбер (дуг).

Мультиграф — граф с кратными рёбрами и без петель.

Псевдограф — мультиграф с хотя бы одной петлёй.

Полный граф — граф, в котором любые две вершины соединены одним ребром.

Турнир — ориентированный граф, в котором каждая пара вершин соединена одной дугой.

Рисунок 5. Турнир

Направленный граф — ориентированный граф, в котором две вершины соединяются не более чем одной дугой.

Дерево — связный граф без циклов.

Лес — множество деревьев.

Двудольный граф — граф, в котором все вершины можно разбить на два непересекающихся подмножества и так, что всякое ребро соединяет вершину из с вершиной из .

Полный двудольный граф — двудольный граф, в котором каждая вершина одного подмножества соединена ребром с каждой вершиной другого подмножества.

-дольный граф — граф, в котором все вершины можно разбить на непересекающихся подмножеств так, что не будет рёбер, соединяющих вершины одного и того же подмножества.

Планарный граф — граф, который можно изобразить диаграммой на плоскости без пересечений рёбер.

Взвешенный граф — граф, в котором каждому ребру поставлено в соответствие некоторое число, называемое весом ребра.

-регулярный граф — граф, в котором степени всех вершин равны .

ВНИМАНИЕ! К сожалению, некоторые из этих терминов не вполне устоялись, так как нет чётких стандартов. В большинстве случаев терминология определяется во вводной части большинства книг по теории графов.

Например, некоторые авторы разрешают мультиграфам иметь петли, а некоторые не разрешают; определения пути и маршрута разнятся…

Основная информация

Лемма 1. Если степени всех вершин в графе больше или равны двум, то граф обязательно содержит контур.

Доказательство. Действительно, выйдя из некоторой вершины и войдя в другую, всегда можно выйти из неё по другому ребру, так как степень каждой вершины больше или равна двум. Выйти из вершины по новому ребру невозможно только в том случае, если эта вершина уже встречалась, а это означает, что можно выделить контур из вершин этого графа.

Теорема (Эйлер). Для того, чтобы данный связный неориентированный граф (возможно, мультиграф без петель) был эйлеровым, необходимо и достаточно, чтобы степени всех вершин были чётными. Данный связный граф будет полуэйлеровым тогда и только тогда, когда степени двух вершин будут нечётными, а степени остальных вершин — чётными.

Доказательство этой теоремы начнём с так называемой леммы о рукопожатиях. Название этой леммы связано с тем, что эта лемма отвечает на следующий вопрос: «У вас собрались гости. Некоторые из них здороваются друг с другом посредством рукопожатий. Какими свойствами обладает число таких людей?» Ответ даётся следующей достаточно простой леммой.

Лемма о рукопожатиях (для неориентированного графа). Сумма степеней всех вершин графа — чётное число, равное удвоенному числу рёбер:

Доказательство. Возьмём пустой граф (есть вершины, но нет рёбер). Сумма степеней вершин такого графа равна нулю. При добавлении ребра, связывающего любые две вершины, сумма степеней всех вершин увеличивается на 2 (у одной вершины добавилась 1, у второй добавилась 1, в итоге 2, остальные по нулям). Продолжая добавления рёбер, на любом шаге получим, что сумма всех степеней вершин чётна и равна удвоенному числу рёбер (добавление ребра увеличивает сумму степеней всех вершин на 2, удаление ребра — уменьшает на 2). Лемма доказана.

Лемма о рукопожатиях (для ориентированного графа). Сумма входящих и исходящих степеней всех вершин ориентированного графа — чётное число, равное удвоенному числу дуг:

Доказательство аналогично доказательству леммы о рукопожатиях в неориентированном графе. Возьмём пустой граф и будем добавлять в него дуги. При этом каждое добавление дуги увеличивает на единицу сумму входящих и на единицу сумму исходящих степеней. Таким образом, сумма входящих и исходящих степеней всех вершин ориентированного графа чётна и равна удвоенному числу дуг.

С точки зрения задачи о рукопожатиях это означает, что число гостей, которые поздоровались за руку нечётное число раз, должно быть чётным.

Перейдём к доказательству теоремы Эйлера.

А) Необходимость. Пусть граф является эйлеровым. Тогда в нем имеется эйлеров цикл. Двигаясь по циклу, будем подсчитывать степени вершин. Так как все рёбра в цикле различны, прохождение каждой вершины добавляет 2 в степень этой вершины (то есть каждый «заход» в вершину и «выход» из неё даёт 2 степени вершины). Так как в цикл входят все рёбра, то, когда обход будет закончен, будут определены степени всех вершин, которые будут чётными. Таким образом, сумма степеней всех вершин чётна.

Б) Достаточность. Индукция по числу вершин . При связный граф имеет одну вершину, степень которой чётна, а в таком графе есть эйлеров цикл. В случае, когда в связном графе всего 2 вершины и обе они имеют чётную степень (в этом случае имеем мультиграф, один из которых изображён на следующем рисунке), ясно, что в этом случае имеется эйлеров цикл (при любой чётной степени этих двух вершин).

Рисунок 6. Мультиграф

Предположим, что наше утверждение верно для всех связных графов, число вершин в которых строго меньше , и докажем его для графа, имеющего вершин.

По лемме 1 в этом графе есть контур (степень всех вершин больше или равна 2). Если он содержит все рёбра графа, то эйлеров цикл найден (!). Если же этот контур содержит не все рёбра, то удалим все его рёбра из графа. Получим новый граф. Новый граф распадается на компоненты связности, каждая из которых должна иметь общую вершину с удалённым контуром (иначе первоначальный граф не был бы связным), причём степени всех вершин каждой компоненты чётны и число вершин в ней строго меньше , то есть по индуктивному предположению каждая компонента имеет эйлеров цикл. Теперь мы можем построить эйлеров цикл в данном графе следующим образом. Обходим последовательно рёбра удалённого контура. Далее, если мы пришли в вершину, общую для контура и какой-то компоненты связности, то обходим по эйлерову циклу эту компоненту (то есть присоединяем к контуру этот цикл) и идём по этому контуру дальше. Тем самым все рёбра будут пройдены, и каждое ровно один раз. Всё это схематично изображено на следующем рисунке: сначала начинаем обходить контур ; пройдя ребро , проходим «верхний» граф, затем возвращаемся в точку и далее идём по ребру , обходим «правый» граф и так далее. Утверждение Б доказано.

Рисунок 7

В) Необходимость. Пусть граф полуэйлеров. Это значит, что он имеет эйлеров путь, начинающийся в одной вершине и заканчивающийся в другой. Очевидно, что обе эти вершины должны иметь нечётную степень, а степени остальных чётны.

Г) Достаточность. Пусть граф имеет ровно две вершины нечётной степени и . Возможны 2 случая: эти вершины не связаны ребром или связаны. В первом случае, добавляя ребро , получаем граф, все вершины которого чётной степени, следовательно, он имеет эйлеров цикл (по предыдущим доказанным утверждениям) и, удаляя из него это ребро , получаем эйлеров путь. Во втором случае удалим ребро. Получим новый граф. Если он имеет 2 компоненты связности, то пройдём одну из них по эйлерову циклу, начиная и заканчивая в вершине, которая в первоначальном графе имела нечётную степень. Затем добавим удалённое ребро (мост), пройдём его — попадём в другую вершину, которая ранее имела нечётную степень, и пройдём вторую компоненту связности по эйлерову циклу. Во всех разобранных случаях получим эйлеров путь, который начался в одной из вершин с нечётной степенью и закончился в другой.

Теорема доказана.

Примечание. Если граф (или мультиграф без петель) содержит вершин нечётной степени, то его можно разбить на полуэйлеровых графов (то есть нарисовать росчерками пера). Доказательство аналогично доказательству теоремы Эйлера.

Имеется простой алгоритм (так называемый алгоритм Флери) для нахождения эйлерова цикла (конечно, если этот цикл существует), который состоит в следующем: начинаем с любой вершины и «стираем» пройденные ребра (удаляем также изолированные вершины, которые при этом образуются. При этом по мосту (перешейку) проходим только в случае, когда нет других возможностей.

Рисунок 8. Рёбра пронумерованы в порядке их прохождения. Эйлеров цикл: .

Очевидно, что для того, чтобы построить эйлеров путь достаточно использовать алгоритм Флери, который надо начать с вершины, имеющей нечётную степень.

Рассмотрим некоторые приложения теоремы Эйлера, которые в основном связаны с так называемой задачей китайского почтальона.

Пусть имеется некоторый связный граф, рёбрам которого приписаны некоторые числа, называемые весами рёбер. Требуется найти такой цикл, при котором каждое ребро проходится по крайней мере один раз и суммарный вес всех рёбер, вошедших в цикл, минимален. Заметим, что если граф является эйлеровым, то любой эйлеров цикл решает поставленную задачу (для эйлерова графа веса роли не играют).

Эта задача имеет много приложений, например, поливка улиц одной машиной (здесь ребра графа — дороги, а перекрёстки — вершины; веса — это длины дорог), а также сбор мусора, доставка почты или даже наилучший маршрут для осмотра музея или уборка помещений и коридоров в больших учреждениях.

Заметим, что имеется алгоритм решения задачи китайского почтальона, но он требует достаточно длительного описания.

Кратко рассмотрим проблему, связанную с возможным обходом всех вершин в графе: существует ли в данном связном графе цикл (или маршрут), обходящий каждую вершину (кроме первой) только один раз. Если такой цикл (маршрут) существует (в этом случае такой цикл будет контуром, а маршрут — простым маршрутом), то граф называется гамильтоновым (полугамильтоновым), и соответствующий цикл (маршрут) называют гамильтоновым циклом (маршрутом).

Далее изображены гамильтонов, полугамильтонов и не гамильтонов графы.

Рисунок 9

Несмотря на сходство постановки задач для гамильтоновых графов с эйлеровыми, «хорошего» решения для гамильтоновых графов нет. Вообще, о гамильтоновых графах известно очень мало. В основном — это теоремы типа «если в графе достаточное число рёбер, то он гамильтонов». Ясно, что теоремы такого типа не могут дать критерия гамильтонова графа, поскольку в графах такого типа вершин может быть очень много, а рёбер сравнительно мало.

Приведём без доказательства самую известную теорему.

Теорема (Дирак, 1952). Если в связном графе с вершинами степени всех вершин больше или равны , то граф гамильтонов.