- •Лекция 2
- •Лекция 3
- •Лекция 4
- •Лекция 5
- •Лекция 13
- •Лекция 14
- •Лекция 16
- •Основные понятия
- •Понятие множества. Способы задания множеств.
- •Понятие множества. Способы задания множеств.
- •Отношения между множествами.
- •3, Операции над множествами.
- •Алгебра множеств.
- •Теорема о количестве подмножеств конечного множества.
- •Формула включений и исключений.
- •Лекция 2
- •1.Понятие вектора. Прямое произведение множеств.
- •2.Теорема о количестве элементов прямого произведения.
- •Понятие вектора. Прямое произведение множеств.
- •Теорема о количестве элементов прямого произведения.
- •Лекция 3
- •2. Понятие высказывания.
- •3. Логические операции над высказываниями
- •4.Формулы алгебры логики.
- •Лекция 4
- •2. Важнейшие равносильности алгебры логики.
- •3.Равносильные преобразования формул.
- •Задачи для самостоятельного решения
- •Лекция 5
- •Дизъюнктивная нормальная форма.
- •Конъюнктивная нормальная форма.
- •Проблема разрешимости.
- •Лекция 6
- •Функции алгебры логики.
- •3. Представление произвольной функции алгебры логики в виде формулы алгебры логики.
- •4.Приложения алгебры логики в технике (релейно-контактные схемы).
- •Контрольные вопросы
- •Лекция 7
- •Совершенная дизъюнктивная нормальная форма.
- •Совершенная конъюнктивная нормальная форма.
- •Совершенная дизъюнктивная нормальная форма.
- •2.Совершенная конъюнктивная нормальная форма.
- •Лекция 8
- •2.Понятие минимальной днф. Метод минимизирующих карт.
- •3.Метод Квайна.
- •4.Метод Карно.
- •5.Постановка задачи минимизации в геометрической форме.
- •6.Сокращенная днф.
- •7.Тупиковая днф. Днф Квайна.
- •Лекция 9
- •Некоторые логические операции. Двоичное сложение.
- •Полином Жегалкина.
- •Некоторые логические операции. Двоичное сложение.
- •Полином Жегалкина.
- •Лекция 10
- •Полная система . Достаточное условие полноты.
- •Критерий полноты системы булевых функций.
- •Независимые системы. Базис замкнутого класса.
- •Полная система. Достаточное условие полноты.
- •Критерий полноты системы булевых функций.
- •3. Независимые системы. Базис замкнутого класса.
- •Лекция 11
- •Понятие предиката.
- •Логические операции над предикатами.
- •1. Понятие предиката
- •2. Логические операции над предикатами
- •Лекция 12
- •2. Формулы логики предикатов.
- •Значение формулы логики предикатов.
- •4. Равносильные формулы логики предикатов.
- •Лекция 13
- •Построение противоположных утверждений.
- •3. Прямая, обратная и противоположная теоремы.
- •4. Необходимые и достаточные условия.
- •5. Доказательство методом от противного.
- •Задачи для самостоятельного решения
- •Лекция 14
- •2. Использование метода математической индукции для нахождения сумм конечного числа слагаемых
- •3. Использование метода математической индукции для доказательства неравенств и делимости выражений, зависящих от n на некоторое число
- •4. Обобщение метода математической индукции
- •Контрольные вопросы
- •Лекция 15
- •Операции над бинарными отношениями.
- •3. Свойства бинарных отношений.
- •4. Специальные бинарные отношения.
- •Контрольные вопросы
- •Лекция 16
- •Функция
- •1. 4. Отображение
- •Обратная функция
- •2. Свойства отображений и функций
- •3.Операции над функциями. Свойства операций
- •Контрольные вопросы
- •Лекция 17
- •Основные понятия .
- •2. Смежность, инцидентность, степени вершин.
- •3. Способы задания графов
- •Маршруты в неориентированном графе
- •Операции над графами.
- •Связность. Компоненты связности
- •Контрольные вопросы
- •Лекция 18
- •2. Метрические характеристики неориентированного графа
- •Минимальные маршруты в нагруженных графах
- •Задачи на деревьях
- •Цикловой ранг графа. Цикломатическое число
- •Контрольные вопросы
- •Лекция 19
- •Эйлеровы цепи и циклы
- •Гамильтоновы циклы и цепи
- •Эйлеровы цепи и циклы
- •Гамильтоновы циклы и цепи.
- •Контрольные вопросы
- •Лекция 20
- •Двудольный граф. Условие существования двудольного графа
- •Паросочетания . Реберные покрытия
- •Двудольный граф. Условие существования двудольного графа
- •Паросочетания. Реберные покрытия
- •Контрольные вопросы
- •Лекция 21
- •Основные определения
- •Алгоритм плоской укладки графа
- •Контрольные вопросы
- •Лекция 22
- •Способы задания ориентированного графа
- •Путь в ориентированном графе
- •4. Связность. Компоненты связности в орграфе
- •Контрольные вопросы
- •Лекция 23
- •2. Минимальные пути в нагруженных орграфах
- •3. Порядковая функция орграфа без контуров
- •Контрольные вопросы
Лекция 19
ТЕМА: ЭЙЛЕРОВЫ И ГАМИЛЬТОНОВЫ ЦЕПИ И ЦИКЛЫ
ПЛАН:
Эйлеровы цепи и циклы
Гамильтоновы циклы и цепи
Главная
Эйлеровы цепи и циклы
Классической в теории графов является следующая задача. В городе Кенигсберге имеется два острова, соединенных семью мостами с берегами реки Преголь и друг с другом , как показано на рисунке.
Задача состоит в следующем: осуществить прогулку таким образом, чтобы , пройдя по одному разу по каждому мосту, вернуться обратно. Решение этой задачи сводится к поиску некоторого специального маршрута.
Пусть G(V, X) – псевдограф. Цепь (цикл) в G(V, X) называется эйлеровой (эйлеровым), если она (он) проходит по одному разу через каждое ребро графа G(V, X).
Поставим в соответствие схеме мультиграф , в котором каждой части суши соответствует вершина, а мостам – ребра. На языке теории графов задача прозвучит так : найти эйлеров цикл в мультиграфе G(V, X).
V1
V2
V3
V4
Прежде чем решать задачу о выделении эйлерова цикла или эйлеровой цепи, очевидно нужно выяснить , существуют ли они. Необходимым условием существования эйлерова цикла или цепи является связность графа.
Ответы на вопросы о существовании в графе эйлерова цикла и цепи дают ниже приводимые утверждения. Для их доказательства понадобятся вспомогательные утверждения.
Если в псевдографе G имеется хотя бы одно ребро и отсутствуют висячие вершины, то G содержит хотя бы один простой цикл.
Доказательство проведем по индукции.
Пусть G содержит только одно ребро, тогда это ребро – петля, т.к. нет висячих вершин, а петля – это простой цикл.
v
x
Пусть G содержит два ребра, тогда это кратные ребра. И, следовательно, простым циклом является v x1 w x2 v:
Пусть граф не содержит кратных ребер, т.е G – граф и v1 , v2 – произвольные смежные вершины графа. Рассмотрим последовательность v1, v2, v3…вершин графа G такую, что для любого i 3 вершины vi , v i-1 смежны и vi vi-2 :
vi-2
vi-1
vi
Поскольку в графе нет висячих вершин, то такую последовательность можно продолжать неограниченно. Используя конечность множества вершин графа, получаем, что обязательно произойдет совпадение vi = vj , где 1 i < j – 2. Пусть это будет первое совпадение, т.е. совпадение с наименьшим номером j. Тогда последовательность vi v i+1 v i+2…vj – простой цикл в графе.
Введем обозначения: если 1 и 2 – циклы псевдографа G , имеющие хотя бы одну общую вершину и не имеющие общих ребер, то, очевидно, существует цикл, проходящий через все ребра , входящие в 1 и 2 . Обозначим 1 + 2 любой из таких циклов. Для любого цикла обозначим V() и X() соответственно множество вершин и множество ребер, входящих в .
Пусть - цикл без петель. Тогда для v V() количество ребер в Х(), инцидентных v , четно.
Поскольку в цикле отсутствуют петли и все ребра попарно различны, то с каждым новым вхождением в вершины v в этот цикл войдут также два новых инцидентных ей ребра, а следовательно, общее число ребер в Х() инцидентных v , четно.
Следствие. Если вершина входит в некоторый цикл. То она не может быть висячей.
Теперь сформулируем и докажем теорему о существовании в графе эйлерова цикла.
Для того, что бы связный псевдограф G обладал эйлеровым циклом, необходимо и достаточно, что бы степени его вершин были четными.
Необходимость. Пусть G обладает эйлеровым циклом.
Удалим из G все петли. Получим мультиграф G’ , который также обладает эйлеровым циклом. Т.к эйлеров цикл мультиграфа G' содержит все ребра из G', а следовательно, и все вершины из G', то в силу утверждения 2 степени всех вершин мультиграфа G' четны, откуда, учитывая то, что вклад петли в степень вершины, инцидентной этой петле, равен 2, получаем четность степеней всех вершин графа G.
Достаточность. Пусть m – количество ребер в G.
При m = 1 связный псевдорграф G с вершинами четной степени может выглядить только следующим образом: G(V, X), где V = {v}, X = {x = {v, v}}. Значит, G(V, X) – петля, а петля – это эйлеров цикл.
Предположим , что для некоторого целого m 2 достаточность доказана для всякого псевдографа с m -1 ребрами. Докажем справедливость для псевдографа с m ребрами.
Пусть в связном псевдографе G c m ребрами степени вершин четны. В силу утверждения 1 в G имеется простой цикл 0 . Если 0 содержит все ребра из G , то эйлеров цикл найден. В противном случае удаляем из G все ребра , содержащиеся в 0. в результате получим псевдограф G' , каждая компонента связности которогоявляется либо изолированной вершиной, либо псевдографом, степень каждой вершины которого четна. Пусть Gi , где i = 1, 2, …р – компоненты связности графа G',отличные от изолированных вершин. По предположеню, для каждого псевдографа Gi можно построить эйлеров цикл I . В силу связности G цикл 0 имеет общие вершины с любым из циклов i , где i = 1, 2, …р. Тогда искомым эйлеровым циклом в G является цикл :
= (…((0 + 1 ) + 2) + …+ р).
Сформулируем и докажем теорему о существовании эйлеровой цепи в графе.
Для того, что бы связный псевдограф G обладал эйлеровой цепью, необходимо и достаточно, что бы он имел ровно две вершины нечетной степени.
Необходимость. Пусть G имеет эйлерову цепь, соединяющую v и w. Добавим к G дополнительное ребро {v, w}. Получим псевдограф G', обладающий эйлеровым циклом, а следовательно, степени вершин графа G' четны. Но тогда четны и степени вершин псевдографа G, за исключением вершин v и w.
Достаточность. Пусть G имеет ровно две вершины v и w нечетной степени. Добавим к G новое ребро {v, w}. Получим связный псевдограф G' со всеми вершинами четной степени. Тогда в графе G' существует эйлеров цикл. Исключив из этого цикла ребро {v, w}, получим эйлерову цепь , соединяющуя вершины v и w.
Замечание. Эйлерова цепь соединяет вершины нечетной степени. Вернемся к задаче о Кенигсбергских мостах. Необходимое условие существования эйлерова цикла или эйлеровой цепи выполняется, т.к граф связный. Найдем степени вершин графа: (v1) = (v2) = (v4) = 3, (v3) =5. Значит, граф не обладает ни эйлеровым циклом , ни эйлеровой цепью.
Познакомимся с алгоритмами выделения эйлерова цикла и эйлеровой цепи.
Алгоритм 1 выделения эйлерова цикла в связном мультиграфе G(V,X), где Х и степени вершин четны..
Выделить из G цикл 1. Положить k = 1 (k - число циклов), G' = G.
Удалить из G' ребра, принадлежащие множеству Х(k). Полученный псевдограф снова обозначить G'. Если в G' отсутствуют ребра, то переходим к шагу 4. В противном случае выделяем из G' цикл k+1 и перейти к шагу 3.
Присвоить k: = k + 1 и перейти к шагу 2.
По построению 1 , …, k – циклы. Если k = 1, то 1 – искомый эйлеров цикл, работа алгоритма заканчивается. В противном случае находим цикл i такой, что V(i) V(1) , где 2 i k. Перейти к шагу 5.
Присвоить к: = i – 1, 1 : 1 + i , j : j+1 , j = I, …, k. Перейти к шагу 4.
Применим этот алгоритм для выделения эйлерового цикла для псевдографа с четными степенями вершин..
Удалим из G петли. Получим связный мультиграф G’, степени которого четны. Пусть в G’ имеется хотя бы одно ребро. Тогда, применяя к G' приведенный алгоритм, найдем эйлеров цикл в графе G'. Добавляем в этот цикл удаленные петли, получим эйлеров цикл в G.
Рассмотрим теперь применения этого алгоритма для выделения эйлеровой цепи в связном псевдографе, имеящим ровно две вершины v, w нечетной степени., где Х . Добавляя к G ребро {v, w}, получим псевдограф G' с четными степенями вершин. Выделив в G' эйлеров цикл и удалив из него ребро {v, w} , получим эйлерову цепь.
Алгоритм 2 выделения эйлерова цикла в связном мультиграфе G(V,X), где Х и степени вершин четны.
Выбрать произвольно некоторую вершину v.
Выбрать произвольно некоторое ребро х, инцидентное v , и присвоить ему номер 1.
Каждое пройденное ребро вычеркивать и присваивать ему номер, на единицу больший номера предыдущего вычеркнутого ребра.
Находясь в вершине vi , не выбирать ребра, соединяющего vi с v, если есть возможность другого выбора.
Находясь в вершине vi , не выбирать ребра, которое является мостом (при удалении которого граф, образованный незачеркнутыми ребрами, распадается на две компоненты связности, имеющие хотя бы по одному ребру).
После того, как в графе будут занумерованы все ребра, цикл , образованный ребрами с номерами от 1 до n, где n – число ребер в графе, есть эйлеров цикл.
Для использования этого алгоритма для построения эйлеровой цепи первый пункт будет таким: выбрать вершину с нечетной степенью. Остальные шаги не изменятся.
Пример. Построить эйлеров цикл, используя оба алгоритма.
Применим первый алгоритм.
Данный псевдограф - связный. Найдем степени вершин: (v1) = 4, (v2) = 4, (v3) = 6, (v4) = 4, (v5) = 4. Все степени вершин четные, следовательно, граф обладает эйлеровым циклом. Построим его.
Используем первый алгоритм.
Удалим петли х10 и х11. Получим мультиграф. Выделим цикл v3x4x2x5v3 – обозначим 1. Удалим ребра x4, x2, x5 . Снова выделяем цикл v3x3x1x6v3 - 2 . V(1)V(2) = {v1, v2, v3}. Удалим ребра. Выделяем цикл v3x7x9x8v3 - 3. V(2)V(3) = {v3}. В мультиграфе построили эйлеров цикл 1 + 2 + 3 . Добавим удаленные петли и получим цикл в заданном графе: v3x4x2x5 x3x1x6 x7 x10 x9 x11 x8v3.
Используем второй алгоритм.
Как и в первом алгоритме, удалим петли , получим мультиграф. Выберем любую вершину, например, v3. Выберем инцидентное ей ребро, например, х7 . Присвоим ему номер 1, т.е. х71 и вычеркнем. Выбираем инцидентное ребро вершине v4 – это ребро х9, присвоим ему номер 2 – х92 , вычеркнем. Выбираем инцидентное ребро вершине v5 – это ребро х8, присвоим ему номер 3 – х83 , вычеркнем. Далее аналогичным образом выбираем ребра х4, х2, х5 и х3, х1, х6. В мультиграфе эйлеров цикл построен. Добавим в него удаленные петли. Окончательно получим эйлеров цикл в данном графе: v3x7x10x9 x11x8x4 x2 x5 x3 x1 x6v3.