- •Дискретная математика
- •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.3.2 Законы алгебры логики
Законы коммутативности:
a b = b a, a b = b a.
Законы ассоциативности:
a (b с) = (а b) с, a (b с) = (а b) с.
Законы дистрибутивности:
a (b с) = (а b) (а с), a (b с) = (а b) (а с).
Законы идемпотентности:
а = a а, a = а a.
Законы нуля и единицы:
a а = 0, а 1 = а, a а = 1, а 0 = а.
Законы де Моргана:
(a b) = a b, (a b) = a b.
Законы поглощения:
a (а b) = а, a (a b) = а.
Законы склеивания:
(а b) (а b) = а, (а b) (а b) = а.
Закон двойного отрицания:
а = а.
Не все законы независимы друг от друга. Так, например, закон идемпотентности можно получить из закона поглощения с использованием законы дистрибутивности:
а = a (а b) = (a а) (а b) = (a (а b)) (a (а b)) = а а.
Закон поглощения может быть выведен из закона нуля и единицы:
a (а b) = (a 1) (а b) = a (1 b) = a 1 = а.
Закон идемпотентности относительно дизъюнкции непосредственно выводится из законов нуля и единицы:
a а = (a а) 1 = (а а) ( а а) = а ( а а) = а 0 = а.
При доказательствах логических выражений нужно всегда учитывать принцип двойственности. Так, вышеперечисленная цепочка равенств для закона поглощения может быть представлена следующим образом:
a (а b) = (a 0) (а b) = a (0 b) = a 0 = а.
Т.о. в качестве независимой системы законов можно выбрать законы: коммутативности, ассоциативности, дистрибутивности, нуля и единицы.
2.3.3 Разложения функций по переменным
Разложение Шеннона
Введем следующие обозначения:
х0 = х; х1 = х.
Пусть - параметр, равный 0 или 1.
Тогда: х = 1, если х = ;
х = 0, если х .
Теорема Шеннона: всякая логическая функция F (х1, … ,хn) может быть представлена в виде:
F
(х1, … ,
хm,
хm+1,
… , хn)
=
x11…
xmm
F (1,
… , m,
хm+1,
… , хn),
(2.1)
где m n, а дизъюнкция берется по всем 2m наборам значений переменных х1, … , хm.
Это равенство называется разложением по переменным х1, … , хm.
{Пример: n = 4, m = 2.
Разложение будет иметь вид:
F (х1, х2 , х3 , х4) = х1 х2 F (0, 0 , х3 , х4) х1 х2 F (0, 1 , х3 , х4)
х1 х2 F (1, 0 , х3 , х4) х1 х2 F (1, 1 , х3 , х4).
Доказательство.
Производим подстановкой в обе части (2.1) произвольного набора (1, … , m, m+1, …, n) всех n переменных.
Т.к. х = 1 только тогда, когда х = , то среди 2 m конъюнкций x11… xmm правой части (2.1) в единицу обратится только одна, в которой 1 = 1, … , m = m. Все остальные конъюнкции равны 0. Поэтому получим:
F (1, … , n) = 11… mm F (1, … , m, m+1, … , n) = F (1, … , n).
Особое значение на практике имеет случай, когда m = n, т.е. разложение функции n переменных по n переменным:
F
(х1, … ,хn)
=
x11…
xnn.
Т.е. все переменные в правой части (2.1) получают фиксированное значение и функции в конъюнкциях правой части становятся равными 0 или 1. Т.о. дизъюнкция берется по всем наборам (1, … , n), на которых F = 1. Такое разложение называется СДНФ – совершенной дизъюнктивной формой функции F. СДНФ содержит ровно столько конъюнкций, сколько единиц в таблице истинности для F. Каждому единичному набору (1, … , n) соответствует конъюнкция всех переменных, в которой хi взято с отрицанием, если i = 0, и без отрицания, если i = 1. Такие конъюнкции называются конституентами единицы.}
Двойственное разложение Шеннона
Суть состоит в том, что в формуле, описывающей функцию, можно одновременно произвести следующие замены:
, 0 1, х х, , 1 0, х х.
Т.о.
F (х1,
… ,хn) =
x11…
xnn
= =
x11
…
xnn
СДНФ СКНФ
и тем самым получим СКНФ – совершенную конъюктивную нормальную форму функции F. СКНФ содержит ровно столько дизъюнкций, сколько нулей в таблице истинности для F. Каждому нулевому набору (1, … , n) соответствует дизъюнкция всех переменных, в которой хi взято без отрицания, если i = 0, и с отрицанием, если i = 1. Такие дизъюнкции называются конституентами нуля.
Переход от табличной формы представления /логической функции к аналитической
Всякую логическую функцию можно представить в виде СДНФ и СКНФ. Причем у каждой булевой функции может быть только по одной СДНФ и СКНФ.
Таблица 2.10 – Функция 3-х переменных
х1 х2 х3 |
F |
конституента 1 |
конституента 0 |
0 0 0 |
0 |
|
х1 х2 х3 |
0 0 1 |
1 |
х1 х2 х3 |
|
0 1 0 |
1 |
х1 х2 х3 |
|
0 1 1 |
0 |
|
х1 х2 х3 |
1 0 0 |
0 |
|
х1 х2 х3 |
1 0 1 |
1 |
х1 х2 х3 |
|
1 1 0 |
1 |
х1 х2 х3 |
|
1 1 1 |
0 |
|
х1 х2 х3 |
Отсюда переходим к аналитическим выражениям логической функции:
СДНФ: F = х1 х2 х3 х1 х2 х3 х1 х2 х3 х1 х2 х3,
СКНФ: F = (х1 х2 х3) (х1 х2 х3) ( х1 х2 х3) ( х1 х2 х3).
Примечание: функция, для которой не существует СДНФ – константа 0, функция, для которой не существует СКНФ – константа 1.
