- •Дискретная математика
- •6.050102 “Компьютерная инженерия” содержание
- •1 Теория множеств 7
- •2 Математическая логика 15
- •3 Формальные теории 35
- •4 Теория графов 47
- •5 Элементы теории чисел 80
- •6 Теория алгоритмов 121
- •Введение
- •1 Теория множеств
- •1.1 Множества и подмножества
- •1.1.1 Элементы множества
- •1.2 Аксиомы теории множеств
- •1.3 Способы задания множеств
- •1.4 Операции над множествами
- •1.5 Элементы алгебры множеств
- •1.5.1 Определение алгебры множеств
- •1.5.2 Основные законы алгебры множеств
- •1.5.3 Принцип двойственности
- •2 Математическая логика
- •2.1 Функции алгебры логики (булевые функции)
- •2.1.1 Способы задания булевых функций
- •2.1.2 Логические функции одной переменной
- •2.1.3 Логические функции двух переменных
- •2.2.6 Функционально полные системы булевых функций
- •2.3 Алгебра буля
- •2.3.1 Определение алгебры. Теорема Стоуна
- •2.3.2 Законы алгебры логики
- •2.3.3 Разложения функций по переменным
- •2.3.4 Приведение логических функций
- •2.3.5 Импликанты и имплициенты булевых функций
- •2.3.6 Методы минимизации логических функций
- •2.4 Алгебра жегалкина
- •2.4.1 Преобразование функций в алгебре Жегалкина
- •2.4.2 Переход от булевой алгебры к алгебре Жегалкина
- •3 Формальные теории
- •3.1 Основные принципы построения формальных теорий исчисления
- •3.2 Определение исчисления высказываний
- •3.2.1 Метатеоремы исчисления высказываний
- •3.2.2 Схемы исчисления высказываний
- •3.3 Исчисление предикатов
- •3.3.1 Определение формальной теории pl
- •3.3.2 Принцип резолюции в исчислении предикатов
- •3.3.3 Схемы доказательств в исчислении предикатов
- •4 Теория графов
- •4.1 История теории графов
- •4.2 Основные определения
- •4.3 Способы представления графов
- •4.3.1 Матрицей смежности
- •4.3.2 Матрицей инцидентности
- •4.4 Пути в графах
- •4.4.1 Задача о кратчайшем пути
- •4.4.2 Алгоритм Дейкстры нахождения кратчайшего пути в графе
- •4.5 Транспортные сети
- •4.5.1 Потоки в транспортных сетях
- •4.5.2 Задача нахождения наибольшего потока в транспортной сети
- •4.5.3 Алгоритм Форда и Фалкерсона нахождения максимального потока транспортной сети
- •4.5.4 Транспортная задача
- •4.6 Обходы в графах
- •4.6.1 Эйлеровы графы
- •4.6.2 Алгоритм Флёри нахождения эйлерова цикла
- •4. Если получился цикл, но не ейлеров, то отбрасываем данную последнюю вершину и повторяем пункт 2.
- •4.6.3 Гамильтоновы циклы
- •4.6.4 Метод ветвей и границ.
- •4.6.5 Метод ветвей и границ в задаче о коммивояжёре
- •4.7 Деревья
- •4.7.1 Построение экономического дерева
- •4.7.2 Алгоритм Краскала
- •5 Элементы теории чисел
- •5.1 Модулярная арифметика
- •5.1.1 Алгоритм Евклида для нахождения наибольшего общего делителя
- •5.1.2 Вычисление обратных величин
- •5.1.3 Основные способы нахождения обратных величин
- •5.1.4 Китайская теорема об остатках
- •5.2 Кодирование
- •5.2.1 Оптимальное кодирование
- •5.3 Обнаружение и исправление ошибок
- •5.3.1 Общие понятия
- •5.3.2 Линейные групповые коды
- •5.3.2 Код Хэмминга
- •5.3.3 Циклические коды
- •5.3.4 Построение и декодирование конкретных циклических кодов
- •5.4 Сжатие информации
- •5.4.1 Исключение повторения строк в последующих строках
- •5.4.2 Алгоритм lzw
- •6 Теория алгоритмов
- •6.1. Основные понятия
- •6.1.1 Основные требования к алгоритмам
- •6.1.2 Блок–схемы алгоритмов
- •6.1.3 Представление данных
- •6.1.4 Виды алгоритмов
- •6.1.5 Правильность программ
- •6.1.6 Эффективность алгоритмов
- •6.1.7 Сходимость, сложность, надежность
- •6.2 Универсальные алгоритмы
- •6.2.1 Основные понятия
- •6.2.2 Машины Тьюринга
- •6.2.3 Рекурсивные функции
- •6.2.5 Тезис Черча-Тьюринга
- •6.2.6 Проблема самоприменимости
- •6.3 Языки и грамматики
- •6.3.1 Общие понятия
- •6.3.2 Формальные грамматики
- •6.3.3 Иерархия языков
- •6.4 Параллельные вычисления
- •Рекомендованная литература
2.1.2 Логические функции одной переменной
Количество логических функций в зависимости от числа переменных
определяется следующим соотношением:
2 n
2 ,
т.к. функция может принимать 2 значения, n переменных также может принимать 2 значения.
Таблица 2.4 – Логические функции одной переменной
х |
F0 |
F1 |
F2 |
F3 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
Каждая функция имеет свое наименование:
F0 (х) = 0 - константа нуля;
F1 (х) = х - тождественная функция;
F2 (х) = х - инверсия;
F3 (х) = 1 - константа единицы.
2.1.3 Логические функции двух переменных
Таблица 2.5 – Функции двух переменных
х1 |
х2 |
F 0 |
F 1 |
F 2 |
F 3 |
F 4 |
F 5 |
F 6 |
F 7 |
F 8 |
F 9 |
F 10 |
F 11 |
F 12 |
F 13 |
F 14 |
F 15 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
обозн |
0 |
|
х1х2 |
х1 |
х2х1 |
х2 |
|
|
|
|
х2 |
х2х1 |
х1 |
х1х2 |
|
1 |
Наименования:
F0 = 0 – константа нуля;
F1 = х1 х2 конъюнкция (логическое умножение), может обозначаться х1 х2;
F2 = х1 х2 отрицание импликации (следования), может обозначаться х1 х2;
F3 = х1 тождественная функция первой переменной;
F4 = х2 х1 – отрицание обратной импликации;
F5 = х2 тождественная функция второй переменной;;
F6 = х1 х2 – сложение по модулю 2 (неравнозначность);
F7 = х1 х2 – дизъюнкция (логическое сложение);
F8 = х1 х2 – стрелка Пирса;
F9 = х1 х2 – эквиваленция, может обозначаться х1 х2, х1 х2;
F10 = х2 – отрицание (инверсия) х2, может обозначаться ;
F11 = х2 х1 – обратная импликация;
F12 = х1 – отрицание х1,
F13 = х1 х2 – импликация;
F14 = х1 х2 – штрих Шеффера;
F15 = 1 – константа единицы.
Определение: переменная называется фиктивной, если ее значение не влияет на значение функции.
Так для F3 - х2 фиктивная, для F5 - х1 фиктивная.
2.2 СВОЙСТВА ЛОГИЧЕСКИХ ФУНКЦИЙ
2.2.1 Функции сохраняющие константу нуля
Определение: логическая функция, принимающая значение 0 на нулевых наборах аргументов, называется булевой функцией сохраняющей константу нуля:
F (0 , … , 0) = 0.
Таких функций существует (2 n - 1)
2
В таблице 2.6 они отмечены знаком +.
2.2.2 Функции сохраняющие константу единицы
Определение: логическая функция, принимающая значение 1 на единичных наборах аргументов, называется булевой функцией сохраняющей константу единицы:
F (1 , … , 1) = 1.
Таких функций существует (2 n - 1)
2
В таблице 2.6 они отмечены знаком +.
2.2.3 Самодвойственные булевые функции
Определение: логическая функция, принимающая противоположное значение на противоположных наборах аргументов, называется самодвойственной булевой функцией:
F (х1, … ,хn) = F ( х1, … , хn).
Таких функций существует 2 n
2
В таблице 2.6 они отмечены знаком +.
2.2.4 Линейные логические функции
Определение: логическая функция называется линейной, если ее можно представить в следующем виде:
F (х1, … ,хn) = a 0 a1 х1 a2 х2 . . . an хn.
Где ai 0, 1.
Таких функций существует
2 (n + 1) .
В таблице 2.6 они отмечены знаком +.
2.2.5 Монотонные логические функции
Определение: логическая функция F (х1, … ,хn) называется монотонной, если для любых двух наборов = (1, … ,n) и = (1, … ,n) таких, что , существует место неравенство F (1, … ,n) F (1, … ,n).
Двоичный набор не меньше , если для каждой пары ( i, i), где
i 1, n, справедливо i i. Так 11 00, 11 10.
Вместе с тем наборы 01 и 10 или 1011 и 0100 не сравниваются между собой при определении монотонности, т.к. для них не выполняется ни i i, ни i i.
В таблице 2.6 они отмечены знаком +.
Таблица 2.6 – Свойства логических функций
х1 |
х2 |
F 0 |
F 1 |
F 2 |
F3 |
F 4 |
F5 |
F 6 |
F 7 |
F 8 |
F 9 |
F 10 |
F 11 |
F 12 |
F 13 |
F 14 |
F 15 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
обозн |
0 |
|
х1х2 |
х1 |
х2х1 |
х2 |
|
|
|
|
х2 |
х2х1 |
х1 |
х1х2 |
|
1 |
|
сохр0 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
|
|
|
|
|
|
|
|
сохр1 |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
самд |
|
|
|
+ |
|
+ |
|
|
|
|
+ |
|
+ |
|
|
|
|
лин |
+ |
|
|
+ |
|
+ |
+ |
|
|
+ |
+ |
|
+ |
|
|
+ |
|
мон |
+ |
+ |
|
+ |
|
+ |
|
+ |
|
|
|
|
|
|
|
+ |