
- •Введение………………………………………………………………………………………..1
- •1.Элементы функциональной полноты в классе двоичных функций.
- •1.1 Основные двоичные функции и их своства. Булевой функцией f(x1 … xn) называют функцию, аргументы которой принимают значения из множества , и значение функции также из множества {0;1}.
- •Бинарная операция ассоциативна, если тождественно выполняется: ;
- •1.2 Утверждение о числе функций от n переменных.
- •1.3 Представление функции в виде совершенной дизъюнктивной и совершенной конъюнктивной формах. Разложение функции по начальному множеству переменных.
- •1.4 Утверждение о представлении двоичной функции в виде полинома Жегалкина .
- •1.5 Основные замкнутые классы двоичных функций относительно суперпозиций функций.
- •X1 x2 X
- •I этап :
- •3 Случай :
- •II этап :
- •1); 2); 3); 4).
- •1) ; 2); 3);
- •4) ; 5);
- •1.7 Предполные классы двоичных функций.
- •Все полные системы для классов t0, t1, s, m, l в утверждениях выше являются базисами для этих систем.
- •2 .Минимизация днф заданной функции.
- •2.1 Геометрическая интерпретация двоичных функций.
- •2.2 Утверждение о максимальных интервалах и тупиковых покрытиях.
- •1 Этап:
- •2 Этап:
- •2.3 Метод поиска всех максимальных интервалов заданной функции с помощью операции склеивания и сокращения.
- •2.4 Метод нахождения всех тупиковых покрытий максимальными интервалами.
- •Достаточно ясна связь задачи нахождения тупиковых покрытий и минимизации функции покрытия.
- •2.5 Метод построения сокращённой д.Н.Ф. С помощью обобщенного склеивания
- •3. Элементы математической логики. Исчисление высказываний, его полнота.
- •Семь теорем.
- •2) . Запишем аксиому а3 в следующем виде: вместоВ подставим формулу а, а вместо а подставим
- •Доказательство полноты исчисления высказываний.
- •4 Графы
- •4.1 Неориентированные, ориентированные графы. Способы задания графов.
- •Представление графов
- •1. Задание графа с помощью матрицы смежности.
- •2. Задание графа с помощью матрицы инцидентности.
- •3. Задание графа с помощью списка смежности.
- •4.2 Азбука теории графов. Маршрут, путь, простой путь. Цикл. Простой цикл. Связность в графе.
- •Связные графы
- •4.3 Методы анализа графа. Поиск в ширину. Нахождение кратчайших путей в графе.
- •4.4 Поиск в глубину. Нахождение остовного дерева с помощью поиска в глубину.
- •4.5 Укладки графов. Планарные графы.
- •Теорема Эйлера
- •4.6 Критерий Понтрягина-Куратовского планарности графа.
- •4.7 Хроматическое число графа.
- •5 Элементы комбинаторики.
- •5.1 Упорядоченные наборы с повторением и без повторений.
- •5.2 Неупорядоченные наборы элементов изданных без повторений.
- •5.3 Неупорядоченные наборы элементов изп данных с возможными повторениями.
- •5.4 Метод включения-исключения.
- •Упражнения.
- •5.5 Основы метода производящих функций.
- •1324 0100.
- •5.6 Основы теории перечисления Пойа. Лемма Бернсайда.
- •Упражнения.
- •6 Основы схем из функциональных элементов. Проблема минимизации
- •6.1 Сложность мультиплексора порядка .
- •1) Мультиплексор порядка
- •6.2 Сложность дешифратора порядка n.
- •2) Дешифратор порядка .
- •6.3 Сложность универсального многополюсника.
- •3) Универсальный многополюсник.
- •6.4 Оценка сложности функций n переменных .
- •7. Элементы теории конечных автоматов.
- •7.1 Ограниченно- детерминированные функции и автоматные языки. Эквивалентность.
- •8. Элементы теории кодирования.
- •Теория кодирования.
- •8.1 Критерий однозначности кодирования.
- •8.2 Критерий префиксного кодирования Мак-Миллана.
- •1. Можно ли выразить конъюнкцию через дизъюнкцию и отрицание.
4.4 Поиск в глубину. Нахождение остовного дерева с помощью поиска в глубину.
Вход
алгоритма:
неориентированный граф
и фиксированная вершина
.
Выход
алгоритма:
компонента связности графа, в которую
входит вершина .
Описание
алгоритма:
алгоритм передвигается по ребрам графа,
оставляя пометки в вершинах графа.
Начальную вершину пометим номером этой
же вершины .
Рекурсивный шаг алгоритма описывается
следующим образом: Есть текущая вершина
.
Рассмотрим вершины графа, смежные с
текущей. Если среди этих вершин найдется
вершина без пометки (обозначим ее
),
то передвигаемся в вершину
и помечаем ее предыдущей вершиной
.
Если
все вершины, смежные с вершиной
помечены, то переходим обратно в вершину
,
которой была помечена текущая вершина
.
Алгоритм заканчивает свою работу тогда,
когда текущей вершиной является
начальная, а все смежные с ней вершины
помечены.
Пример. Рассмотрим граф:
Начальная
вершина .
Выбираем смежные вершины:
.
Они непомечены. Двигаемся в любую из
непомеченных вершин.
Возвращаемся обратно до тех пор, пока у текущей вершины есть непомеченные смежные с ней вершины.
Возвращаемся обратно.
Помеченные вершины - компонента связности.
Покажем корректность данного алгоритма.
Покажем,
что отмеченные вершины есть компонента
связности, в которой находится исходная
вершина .
Пусть
вершина
была отмечена на некотором шаге алгоритма.
Следовательно, эта вершина связана с
исходной вершиной
,
т.к. по построению алгоритма движение
происходило непрерывно по ребрам графа,
и путь до исходной вершины
из
можно получить, двигаясь в обратном
направлении по меткам вершин. Наоборот,
существует вершина
,
связанная с вершиной
.
Покажем, что она будет помечена на
некотором шаге алгоритма.
Предположим
противное: вершина
не была помечена алгоритмом. Рассмотрим
первую вершину на пути из начальной
вершины
в вершину
,
которая не была помечена. Пусть это
будет вершина
.
Вершину
и все вершины между
и
помечены.
Рассмотрим
последний шаг алгоритма, когда текущая
вершина была .
Тогда в очередной момент времени
обязательно будет рассмотрена вершина,
из которой была помечена вершина
,
т.е. происходило обратное движение при
непомеченной смежной вершине.
Это противоречит построению алгоритма. Что и требовалось доказать.
Свойство алгоритма поиска в глубину.
Рассмотрим
граф
– исходный граф. Будем считать его
связным.
будем обозначать граф с тем же множеством
вершин
и множеством ребер
(это ребра, по которым происходит движение
алгоритма поиска в глубину хотя бы один
раз). Тогда справедливо свойство:
–
граф без циклов
Рассмотрим
произвольное ребро
,
по которому движение происходит хотя
бы один раз, следовательно, либо вершина
будет иметь метку
,
либо наоборот. Действительно, рассмотрим
один момент, когда алгоритм проходил
по ребру
.
Если это движение было из
в
,
тогда вершина
получила метку
,
либо наоборот – движение было из
в
,
а вершина
получила метку
.
Предположим
противное.
содержит некоторый цикл. Пусть
– первая вершина цикла, которую посетил
алгоритм. Это значит, что метка вершины
будет отлична от всех остальных вершин
цикла. Тогда последовательно перебираем
вершины цикла. Тогда, вершина
должна иметь метку
,
вершина
метку
и т.д. Рассмотрим последнюю вершину
в цикле. Она будет иметь метку предыдущей
вершины
.
Следовательно, для каждой вершины ребра
имеем противоречие с предложением выше.
Метка каждой вершины
отлична от
и от
,
хотя по этому ребру проходило движение
алгоритма.
Определение. Деревом называется связный граф без циклов.
Пример. Простая цепь есть дерево:
Утверждение.
Минимальное число ребер в графе на
вершинах (
),
которые обеспечивают связность графа
равно
.
Доказательство
1.
Очевидно, что
ребро достаточно, чтобы связать
вершин. такое соединение есть цепь из
последовательных
ребра. Покажем, что меньшим числом ребер
обойтись невозможно. Покажем это
математической индукцией по числу
вершин в графе. Для двух вершин в графе
это очевидно. С двумя вершинами без
ребер граф связным не является.
Допустим,
утверждение доказано для
вершин, т.е. минимальное число ребер для
связности
вершин будет равно
.
Рассмотрим
вершину и предположим противное, что
для
вершины можно обойтись
ребром, чтобы их связать. Рассмотрим
соответствующий граф
,
,
.
Этот граф не имеет циклов (в противном
случае можно удалить любое ребро из
цикла и граф останется связным – любые
две вершины соединены двумя не
пересекающимися путями, следовательно,
если граф содержит цикл, то можно было
бы уменьшить число ребер, которые
связывают вершины этого графа). Теперь
покажем, что в связном графе без цикла
обязательно существует висячая вершина
(имеющая только одну смежную с ней
вершину). Предположим противное – граф
без циклов висячих вершин не имеет, т.е.
каждая вершина смежна по крайней мере
с двумя другими. Рассмотрим движение
по ребрам графа. Из текущей вершины v
передвигаемся в вершину отличную от
той, из которой мы попали в v
(так как число смежных вершин не менее
двух, такое движение возможно
Как
только попадем в вершину, где были ранее,
остановимся. Не трудно видеть, что такая
ситуация неизбежна в силу конечности
числа вершин. В результате получим
простой цикл
– противоречие исходному графу.
Таким
образом, рассмотренный граф обязательно
содержит висячую вершину .
Удалим вершину
вместе с ребром, инцидентным ей. Очевидно,
в результате получается связный граф
с числом ребер
на
вершинах, что противоречит предположению
индукции (для связности
вершин необходимо
ребро).
Рассмотрим
граф
с числом вершин
.
Рассмотрим следующие 3 свойства графа:
1) Связность
2) Отсутствие циклов
3)
Число ребер в графе
(далее будем рассматривать графы без
петель).
Утверждение. Любые два свойства из указанных порождают третье.
Доказательство:
(a)
Покажем,
что связный граф на
вершинах, не имеющий циклов, содержит
ребро. То есть, любое дерево на
вершинах имеет
ребро. Доказательство будем проводить
по индукции по числу вершин в дереве.
Дерево
с единственной вершиной не имеет ребер.
Допустим, что доказано, что любое дерево
на
вершинах имеет
ребро. Рассмотрим дерево на
вершине. Как было замечено раньше, в
любом дереве есть висячая вершина, т.е.
вершина, которой инцидентно не более
чем одно ребро. Удалим висячую вершину
вместе с инцидентным ребром из дерева
.
В результате получим граф
,
который является связным и без циклов.
По предположению индукции, число ребер
в этом графе равно
.
Поэтому, в первоначальном дереве
число ребер равно
.
Что и требовалось доказать.
(b)
Покажем,
что связный граф на
вершинах, содержащий
ребро не имеет циклов.
Предположим
противное: рассматриваемый граф содержит
цикл .
Удалим какое-либо ребро
из данного цикла. При этом связность
графа не нарушится, т.к. любая пара вершин
в цикле графа соединена не пересекающимися
путями в цикле. Поэтому полученный граф
будет связным, имеющим то же число вершин
,
и
ребра. Получаем противоречие с тем, что
минимальное число ребер для связности
графа на
вершинах равно
.
Что и требовалось доказать.
(c)
2
Покажем,
что граф на
вершинах и
ребре, в котором отсутствуют циклы,
является связным.
Предположим
противное: рассматриваемый граф не
является связным. Рассмотрим компоненты
связности графа
с числом вершин
в компонентах связности соответственно.
Компоненты связности являются деревьями,
т.к. это связные графы без циклов. Поэтому,
по доказанному, компоненты связности
имеют соответственно
ребро. Тогда общее число ребер в таком
графе равно
Так
как граф не связный, то число компонент
связности равно, по крайней мере, двум,
то есть, .
Поэтому число ребер
,
что противоречит третьему свойству
нашего графа: число ребер в нем равно
.
Что и требовалось доказать.
Таким образом, любые два из перечисленных трех свойств можно взять за основу определения дерева.
Рассмотрим
граф .
Определение.
Подграфом
графа
называется граф
,
где
,
а
.
Причем каждое ребро из подмножества
имеет оба конца в множестве
.
Определение.
Пусть граф
связный. Тогда остовным
деревом
графа
называется подграф графа
на том же самом множестве вершин
,
который является деревом.
Пример.
Рассмотрим граф на множестве, состоящем
из
вершин. Остовным графом этого графа
является граф, представленный справа:
Утверждение. Любой связный граф имеет остовное дерево.
Доказательство:
Остов
связного графа можно получить поиском
в глубину, а именно, рассматривая все
ребра ,
которые были пройдены алгоритмом поиска
в глубину. Все такие ребра содержат все
вершины графа, и данное множество ребер
не содержит циклов. Также остовное
дерево связного графа можно получить
последовательно удаляя ребра из имеющихся
в графе циклов до тех пор, пока не
получится граф без циклов.