- •Дискретная математика
- •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 Параллельные вычисления
- •Рекомендованная литература
3.3 Исчисление предикатов
Исчисление высказываний не позволяет отвечать на все вопросы, которые возникают в процессе логического вывода. Они оперируют конечными объектами – высказываниями и не позволяют распространить то или иное утверждение на бесконечную область.
Предикат – это функция одной или нескольких переменных, которая может принимать значение «истина» или «ложь».
Примеры: 1. Предикат Р (х) – автор романа «Война и мир».
х {люди}.
Если: Р (Иванов А.А.) = «ложь»; Р (Толстой Л.Н.) = «истина».
Предикат Р (х + 2y = 23).
y = 10 = «истина».
x = 3
В общем случае предикат – это функция Р (х1, х2, … , хn), аргументы которой хi M принимают значение из некоторого множества М, где М – предметная область или область определения предиката.
Число аргументов n – порядок предиката. Если аргументов n, то предикат является n – местным.
Фактически предикат – это функция:
Р : М {«истина», «ложь»};
Р : М2 {«истина», «ложь»};
М М
. . . . . . . . . . . . . . . . . . . . . . . . . .
Р : Мn {«истина», «ложь»};
Множество {«истина», «ложь»} – область значений предиката.
3.3.1 Определение формальной теории pl
В исчислении предикатов первого порядка (формальной теории PL) как и в любой формальной теории необходимо определить:
алфавит;
формулы;
аксиомы;
правила вывода.
Алфавит исчисления предикатов
Алфавит – система множеств А = Р, Х, F, , где
Р = {Q,R,S,T…} множество предикатных букв, обозначающих предикаты;
Х = {x, y, z,…,a, b, c,…} – множество предметных переменных и предметных констант;
F = {f, , g,} – множество функциональных букв;
= {, , , , , } – множество операций.
Кванторы исчисления предикатов
квантор общности обозначает «для каждого» или «для всех».
Записывается:
(х М) (R (x) = 1 – для всякого х из множества М имеем R (x) истина.
Сокращенно: х R (x).
Пример: х ((x + 1)2 = x2 + 2х + 1).
квантор существования обозначает, что существует хотя бы одно значение переменной, для которой данное выражение истинно.
Записывается:
( х М) (R (x) = 1 – существует х из множества М, для которого имеем R (x) истина.
Сокращенно: х R (x).
Пример: х ((x + 1)2 = 4). Истина для х = 1 и х = – 3.
Выражение, определяющее утверждение R (x), называется областью действия квантора.
В исчислении предикатов первого порядка квантор применяется к предметным выражениям.
Определение терма
Всякая предметная переменная или константа есть терм (термин).
Если f – функциональная буква, а 1, 2, … , n – термы, то
f (1, 2, … , n) тоже терм.
3. Других термов нет.
Формулы исчисления предикатов
Определение: Если Р – предикатная буква и 1, 2, … , n – термы, то Р (1, 2, … , n) называется элементарной формулой.
Определение:
Всякая элементарная формула – есть формула.
Если А и В формулы, то формулой является А В, где
{, , , } – операция исчисления предикатов.
Если А – формула, то А – тоже формула.
Если х – предметная переменная, а Р – предикатная буква, то
х Р (x) и х Р (x) тоже формулы – кванторные выражения.
Замкнутые и открытые формулы
Определение: предметная переменная, входящая в формулу, называется свободной, если она не следует непосредственно за квантором и не входит в область действия квантора по этой переменной. Все другие переменные называются связанными.
Определение: всякая формула без свободных переменных называется замкнутой, в противном случае – открытой.
Т.о. всякая замкнутая формула рассматривается как высказывание истины или лжи. В то время как открытая формула со свободными переменными лишь задает некоторое отношение общего вида, которое определяет высказывание истинное или ложное в зависимости от значения переменных.
Тождественные преобразования исчисления предикатов
Законы исчисления предикатов определяют эквивалентные преобразования над формулами. Формулы называются эквивалентными, если в любой предметной области их таблицы истинности совпадают.
В исчислении предикатов выполняются все законы исчисления высказываний.
В исчислении предикатов существуют 4 дополнительных группы тождеств.
Переименование связанных переменных
х Р (х) = y Р (y), х Р (х) = y Р (y).
Отрицание формул с кванторами
х Р (х) = х Р (х), х Р (х) = х Р (х).
Так, в частности, первое обозначает, что «для всех х существует Р (х) истина это то же, что не существует ни одного х, для которого Р (х) ложь».
Примечание: данные преобразования говорят о том, что один из кванторов избыточен, т.е. один из них всегда можно выразить через другой.
Пронесение кванторов
Пронесение квантора общности через конъюнкцию
х А (х) х В (х) = х (А (х) В (х)).
Это следствие того, что квантор общности является обобщенным выражением конъюнкции:
х А (х) = А (х1) А (х2) … А (хn).
Пронесение квантора существования через дизъюнкцию
х А (х) х В (х) = х (А (х) В (х)).
Это следствие того, что квантор существования является обобщенным выражением дизъюнкции:
х А (х) = А (х1) А (х2) … А (хn).
Перестановка одноименных кванторов
х y P (х, y) = y х P (х, y) = y,х P (х, y).
Вынесение констант
х (Е А (х)) = Е х А (х),
х (Е А (х)) = Е х А (х).
Пример: докажем тождество .
Пусть Е = «истина».
Тогда Е х А (х) = «истина».
Е А (х) = «истина» при любом х х (Е А (х)) = «истина».
2. Пусть Е = «ложь».
Тогда истинность левой части будет полностью зависеть от А (х), т.е
Е можно убрать.
х (Е А (х)) = «истина» х А (х) = «истина» Е х А (х)
= «истина».
Система аксиом в исчислении предикатов
Исчисление предикатов включает в себя все аксиомы исчисления высказываний и дополняется двумя аксиомами для кванторов.
Удаление квантора общности
х А (х) А (y),
х, y M.
Т.е., если предикат А(х) истинен для всех х, то он истинен и для конкретного y.
Д оказательство: Нужно доказать, что выражение вида
х А (х) А (y) (1) является тавтологией.
Допустим, что х А (х) А (y) = «ложь». Это возможно только, если:
х А (х) = «истина», (2)
А y = «ложь». (3)
Но, если истинно (2), то для всех y из М должно выполняться А (y) =
= «истина», а мы получили (3), чего не может быть. Т.е. А (y) «ложь». А значит ложно и (1).
Следствие: В А (х) В х А (х).
Введение квантора существования
A (y) x A (x).
Т.е., если предикат А (y) истинен для каждого y, то существует какой-то х, для которого А (х) истинен.
Д оказательство: Докажем, что выражение вида
А (y) А (x) (4) является тавтологией.
Если А (y) = «ложь» (4) – тавтология.
Если А (y) = «истина», то при х = y (4) = «истина».
Следствие: А (х) В А (х) В.
Правила вывода в исчислении предикатов
Используются все правила вывода исчисления высказываний, которые дополняются еще двумя.
Введение квантора общности
Е сли формула В А (х) выводима и в В нет х в качестве свободной переменной, то выводима и формула В х А (х).
Внесение квантора существования
Е сли формула А (х) В выводима и в В нет х в качестве свободной переменной, то выводима и формула х А (х) В.