- •Переключательные функции Основные понятия и определения
- •Переключательные функции одного и двух аргументов
- •1.2.1.Переключательные функции одного аргумента.
- •1.3. Представление переключательной функции в виде многочленов.
- •1.4. Пять классов переключательных функций. Теорема о функциональной полноте
- •1.5. Функционально полные системы логических функций.
- •Импликантная матрица
- •1. Основные понятия и определения теории графов
- •2. Типы графов
- •3. Матрицы графов
- •4.Операции на графах
- •Пересечение графов
- •Композиция графов
- •5. Связные графы. Компонента связности
- •6. Деревья и их свойства
- •Алгоритм построения минимального каркаса
- •Обоснование алгоритма
- •7. Эйлеровы цепи и циклы
- •Алгоритм построения эйлерова цикла
- •Обоснование алгоритма
- •8.Нахождение кратчайших путей в графе
- •Алгоритм Флойда
Алгоритм построения минимального каркаса
Пусть G(X,E) - связный нагруженный граф сpвершинами.
Шаг 1. В качестве первого ребра искомого минимального каркаса выбираем реброe1с наименьшим весом(e1). Если таких ребер несколько, то берем любое из них.
Шаг 2. В качестве второго ребра берем реброe2из множестваE\{e1}, имеющее наименьший вес(e2), и такое, что множество {e1,e2} не содержит простых циклов. Если таких ребер несколько, то берем любое из них.
Шаг 3. В качестве третьего ребра выбираем такое реброe3из множестваE\{e1,e2}, которое имеет наименьший вес(e2) и для которого множество {e1,e2,e3} не содержит простых циклов. Если таких ребер несколько, берем любое из них.
Указанный процесс повторяется и через некоторое число kшагов дает множество E = {e1,e2, …,ek}, к которому нельзя добавить ребро без появления цикла. ПодграфG1(X,E1) и является минимальным каркасом графаG(X,E).
Обоснование алгоритма
В силу свойства 6из теоремы 6.1 построенный подграфG1(X,E1) является деревом, поэтомуk=p–1. Доказательство минимальности каркасаG1(X,E1) разобьем на два этапа. Пусть сначалаG(X,E) – полный граф, у которого веса всех ребер различны, и пустьG2(X,E2) – минимальный каркас графаG. ЕслиE2E1, то рассмотримel– первое из ребер множестваE1, не принадлежащееE2. В графев силу свойства 6теоремы 6.1 существует единственный простой цикл. Циклсодержит реброe0E1. ГрафG3(X,E3), где, не содержит циклов и имеетn– 1 ребро, поэтому он является деревом. Множество {e1,e2, …,el-1,e0} содержится вE2и поэтому не содержит циклов. Тогда в силу рассмотренного выше алгоритма(e0) >(el). Отсюда следует, что суммарный вес дереваG3(X,E3) меньше веса дереваG2(X,E2). Это противоречит минимальности каркасаG2, поэтомуE2=E1иG1(X,E1) – единственный минимальный каркас графаG.
Пусть теперь G(X,E) – произвольный нагруженный связный граф. Если(e1) =(e2), то сделаем замену
(e1)'(e1) =(e1) +,
(e2)'(e2) =(e2) + 2,
взяв такое , чтобы сохранились соотношения весов(e1) и(e2) с другими весами. Сделаем графGполным, добавив такие ребраdi, что. В полученном графе единственным минимальным каркасом будет каркас, полученный с помощью рассмотренного алгоритма. Легко видеть, что этот каркас будет минимальным и в исходном графеG(X,E).
На рис. 6.4 изображены нагруженный граф Gи его минимальный каркасG1.
Рис. 6.4
7. Эйлеровы цепи и циклы
Рассматриваемая в этой главе задача является одной из самых старейших в теории графов. В городе Кенигсберге (ныне Калининград) имелось семь мостов, соединяющих два берега реки Преголь, и два основа на ней друг с другом (рис. 7.1а). Требуется, начав путешествие из одной точки города пройти по всем мостам по одному разу и вернуться в исходную точку.
а) б)
Рис. 7.1.
Если поставить в соответствие мостам ребра, а участкам суши — вершины, то получится граф (точнее псевдограф), в котором надо найти простой цикл, проходящий через все ребра. В общем виде эта задача была решена Эйлером в 1736 г.
Дадим теперь
Определение 7.1.Эйлеровой цепьюв неориентированном графеGназывается простая цепь, содержащая все ребра графаG.Эйлеровым цикломназывается замкнутая Эйлерова цепь. Аналогично,эйлеров путьв орграфеG— это простой путь, содержащий все дуги графаG.Эйлеров контурв орграфеG— это замкнутый эйлеров путь. Граф, в котором существует эйлеров цикл, называетсяэйлеровым.
Простой критерий существования эйлерова цикла в связном графе дается следующей теоремой.
Теорема 7.1.(Эйлер) Эйлеров цикл в связном неориентированном графеG(X,E) существует только тогда, когда все его вершины имеют четную степень.
Доказательство. Необходимость.Пусть- эйлеров цикл в связном графеG,x— произвольная вершина этого графа. Через вершинуxэйлеров цикл проходит некоторое количествоk(k1) раз, причем каждое прохождение, очевидно, включает два ребра, и степень этой вершины равна 2k, т.е. четна, так какxвыбрана произвольно, то все вершины в графеGимеют четную степень.
Достаточность.Воспользуемся индукцией по числуmребер графа. Эйлеровы циклы для обычных (не псевдо) графов можно построить начиная сm=3.Легко проверить, что единственный граф сm=3, имеющий все вершины с четными степенями, есть графK3(рис. 7.2). Существование эйлерова цикла в нем очевидно. Таким образом, дляm=3 достаточность условий доказываемой теоремы имеет место. Пусть теперь графGимеетm>3 ребер, и пусть утверждение справедливо для всех связных графов, имеющих меньше, чемmребер. Зафиксируем произвольную вершинуaграфаGи будем искать простой цикл, идущий изaвa. Пусть(a,x) — простая цепь, идущая изaв некоторую вершинуx. Еслиx a, то цепьможно продолжить из вершиныxв некотором направлении. Через некоторое число таких продолжений мы придем в вершинуzX, из которой нельзя продлить полученную простую цепь. Легко видеть, чтоz =aтак как из всех остальных вершин цепь может выйти (четные степени!);aвaона начиналась. Таким образом, нами построен цикл, идущий изaвa. Предположим, что построенный простой цикл не содержит всех ребер графаG. Удалим ребра, входящие в цикл, из графаGи рассмотрим полученный граф. В графевсе вершины имеют четные степени. Пусть— компоненты связности графа, содержащие хотя бы по одному ребру. Согласно предположению индукции все эти компоненты обладают эйлеровыми циклами1,1, …,kсоответственно. Так как графGсвязан, то цепьвстречает каждую из компонент. Пусть первые встречи циклас компонентамипроисходят соответственно в вершинахx1,x2, …,xk. Тогда простая цепь
(a,a)=(a,x1)1(x1,x1)(x1,x2)…k(xk,xk)(xk,a)
является эйлеровым циклом в графе G. Теорема доказана.
Замечание.Очевидно, что приведенное доказательство будет верно и для псевдографов, содержащих петли и кратные ребра (см. рис. 7.1,а).
Таким образом, задача о кенигсбергских мостах не имеет решения, так как соответствующий граф (см. рис. 7.1,б) не имеет эйлерова цикла из-за нечетности степеней все вершин.
Отметим, что из существования эйлерова цикла в неориентированном графеGне следует связность этого графа. Например, неориентированный графGна рис. 7. 3 обладает эйлеровым циклом и вместе с тем несвязен.
Совершенно также, как теорема 7.1, могут быть доказаны следующие два утверждения.
Теорема 7.2.Связный неориентированный графGобладает эйлеровой цепью тогда и только тогда, когда число вершин нечетной степени в нем равно 0 или 2, причем если это число равно нулю, то эйлерова цепь будет являться и циклом.
Теорема 7.3.Сильно связный орграфG(X,E) обладает эйлеровым контуром тогда и только тогда, когда для любой вершиныxXвыполняется
.
Можно также обобщить задачу, которую решал Эйлер следующим образом. Будем говорить что множество не пересекающихся по ребрам простых цепей графаGпокрываетего, если все ребра графаGвключены в цепиi. Нужно найти наименьшее количество таких цепей, которыми можно покрыть заданный графG.
Если граф G— эйлеров, то очевидно, что это число равно 1. Пусть теперьGне является эйлеровым графом. Обозначим черезkчисло его вершин нечетной степени. По теореме …kчетно. Очевидно, что каждая вершина нечетной степени должна быть концом хотя бы одной из покрывающихGцепейi. Следовательно, таких цепей будет не менее чемk/2. С другой стороны, таким количеством цепей графGпокрыть можно. Чтобы убедиться в этом, расширимGдо нового графа, добавивk/2 ребер, соединяющих различные пары вершин нечетной степени. Тогдаоказывается эйлеровым графом и имеет эйлеров цикл. После удаления изреберграф разложится наk/2 цепей, покрывающихG. Таким образом, доказана
Теорема 7.4.ПустьG— связный граф сk>0 вершинами нечетной степени. Тогда минимальное число непересекающихся по ребрам простых цепей, покрывающихG, равноk/2.