- •Раздел 1. Алгебраические структуры Тема 1.1. Бинарные операции и их свойства
- •Тема 1.2. Алгебраические структуры
- •Тема 1.3. Основные свойства групп
- •Тема 1.4. Поля и кольца
- •Раздел 2. Алгебра множеств Тема 2.1. Основные определения теории множеств
- •Тема 2.2. Подмножество, понятие универсального множества
- •Тема 2.3. Операции над множествами
- •Раздел 3. Основные теоремы комбинаторики
- •Тема 3.1. Метод математической индукции
- •Тема 3.2. Основные принципы комбинаторики
- •Раздел 4. Комбинаторные объекты Тема 4.1. Сочетания
- •Тема 4.2. Размещения и перестановки
- •Раздел 5. Полиномиальные тождества Тема 5.1. Бином Ньютона
- •Тема 5.2. Понятие о методе рекуррентных соотношений
- •Тема 5.3. Метод производящих функций
- •Тема 5.4. Метод траекторий
- •Тема 5.5. Примеры комбинаторных задач
- •Раздел 6. Соответствие, отношение, отображение Тема 6.1. Понятие кортежа. Декартово произведение множеств
- •Тема 6.2. Определения и свойства
- •Тема 6.3. Типы отношений
- •Пересечение и объединение отношений
- •Композиция отображений и отношений
- •Тема 6.5. Решётки
- •Тема 6.4. Верхняя и нижняя границы множества.
- •Раздел 7. Операции булевой алгебры Тема 7.1.Понятие высказывания, простые и составные высказывания
- •Тема 7.2.Операции на множестве высказываний
- •Отрицание
- •Конъюнкция
- •Дизъюнкция
- •«Исключающее или»
- •Импликация
- •Эквивалентность
- •Штрих Шеффера
- •Раздел 8. Законы и тождества Булевой алгебры Тема 8.1.Формулы Булевой алгебры
- •Тема 8.2.Законы и тождества Булевой алгебры
- •Тема 8.3.Составление формулы по заданной таблице истинности
- •Тема 8.4. Двойственность
- •Тема 8.5.Булева алгебра и теория множеств
- •Тема 8.6.Днф, интервалы и покрытия
- •Раздел 9. Функциональная полнота. Алгебра Жегалкина
- •Тема 9.1.Функционально полные системы
- •Тема 9.2.Алгебра Жегалкина и линейные функции
- •Тема 9.3.Замкнутые классы. Монотонные функции
- •Тема 9.4.Теоремы о функциональной полноте
- •Раздел 10. Хорновские формулы
- •Тема 10.1.Задача получения продукции
- •Тема 10.2.Решение задачи о продукции
- •Алгоритм замыкание(X,f)
- •Алгоритм ПрямаяВолна(X,y,f)
- •Алгоритм БыстроеЗамыкание(X,f)
- •Раздел 11. Теория релейно-контактных схем Тема 11.1.Основные понятия
- •Тема 11.2.Основные задачи теории релейно-контактных схем
- •Тема 11.3.Построение машины голосования
- •Тема 11.4.Двоичный сумматор
- •Тема 11.5.Методы упрощения логических выражений. Методы решения логических задач
- •Раздел 12. Логика предикатов Тема 12.1.Определение предиката
- •Тема 12.2.Логические операции над предикатами
- •Тема 12.3.Кванторы
- •Тема 12.4. Истинные формулы и эквивалентные соотношения
- •Тема 12.5.Доказательства в логике предикатов
- •Раздел 13. Теория графов
- •Тема 13.1.Основные определения теории графов
- •Тема 13.2. Способы задания графов
- •Тема 13.3. Отношения порядка и эквивалентности на графе
- •Тема 13.4. Числовые характеристики графа
- •Тема 13.5.Изоморфизм графов
- •Раздел 14. Проблемы достижимости на графах Тема 14.1.Граф достижимости
- •Тема 14.2.Взаимная достижимость, компоненты сильной связности и базы графа
- •Раздел 15. Некоторые классы графов Тема 15.1.Деревья
- •Тема 15.2. Обход графа
- •Тема 15.3. Расстояния. Диаметр, радиус и центр графа. Протяжённости.
- •Раздел 16. Машина Тьюринга
- •Тема 16.1. Формальное описание машины Тьюринга
- •Тема 16.2. Примеры построения машины Тьюринга
- •Тема 16.3. Свойства машины Тьюринга как алгоритма
- •Раздел 17. Машина Поста
- •Тема 17.1. Теоретическая часть. Состав машины Поста
- •Тема 17.2. Применимость программ. Определение результата выполнения программ
- •Раздел 18. Основные понятия теории автоматов Тема 18.1. Общие подходы к описанию устройств, предназначенных для обработки дискретной информации
- •Тема 18.2. Способы задания конечного автомата
- •Тема 18.3. Эквивалентные автоматы
- •Тема 18.4. Автоматы Мура и Мили
- •Тема 18.5. Примеры синтеза автоматов
Раздел 10. Хорновские формулы
Определим вначале один интересный класс булевых формул – Хорновские формулы.
Определение:Пусть
– это множество логических (булевых)
переменных.Хорновская (
-)
формула– это формула вида
![]()
Содержательно,
такая Хорновская формула утверждает,
что из истинности всех условий набора
следует истинность заключения
.
Утверждения такого вида находят широкое
применение в различных разделах
информатики. В частности, в теории баз
данных такой вид имеют «функциональные
зависимости», в логическом программировании
– правила логических программ, в
автоматическом синтезе программ –
«аксиомы вычислимости». В таком же виде
формулируются правила вывода во многих
экспертных системах.
В этих
и других областях представляют интерес
связанные между собой задачи о
минимальности набора
-формул
и о выводимости некоторой
-формулы
из заданного набора
-формул.
Первая задача состоит в выяснении того,
входит ли в набор
-формул
некоторая формула
,
которая может быть удалена из
без потери информации, т.е. которая
выводится из
,
а это и есть задача о выводимости. Уточним
эту задачу.
Определение:
-формула
являетсяследствиемили выводится
из множества
-формул
,
если на всяком наборе значений переменных
из
,
на котором истинны все формулы из
,
истинна и
(будем это обозначать как
).
Это понятие следования некоторой формулы из множества формул можно сформулировать и для произвольных булевых формул, а не только для Хорновских. Следующее простое утверждение показывает, что понятие следования (выводимости) можно переформулировать в терминах тождественной истинности.
Предложение:
-формула
является следствием множества
тогда и только тогда, когда формула
(*)
является истинной на всех наборах значений переменных (т.е. тождественно истинной).
Доказательство:непосредственно следует из определения значений конъюнкции и импликации.
Как уже
отмечалось, проблема проверки по булевой
формуле её тождественной истинности
является весьма сложной. Известный нам
метод такой проверки с помощью построения
таблицы значений на всех наборах
переменных практически не работает уже
для формул с несколькими десятками
переменных. В то же время во многих
практических задачах число логических
параметров исчисляется сотнями.
Оказывается, что для установления
тождественной истинности формул вида
(*) или, что то же самое, для задачи проверки
условия
для
-формул
имеется простой и очень эффективный
алгоритм, позволяющий её решать для
формул с сотнями и тысячами переменных.
Мы
изложим этот алгоритм на примере одного
из интересных «экономических» приложений
-формул
– задачи о возможности производства
заданной продукции (набора товаров) из
некоторого множества исходных продуктов
(товаров, сырья).
Тема 10.1.Задача получения продукции
Пусть
задано некоторое множество
имён товаров (продуктов, сырья и т.п.) и
имеется некоторое множество
технологических процессов (производств),
описывающих возможности получения
одних продуктов из других. Каждый
технологический процесс
задаётся множеством
исходных продуктов (входов) этого
процесса и результирующим продуктом
(выходом)
,
т.е. процесс
позволяет из исходных продуктов
получить продукт
– его выход. Будем задавать технологический
процесс в виде
.
Продукт, полученный в одном процессе,
может далее использоваться в других
процессах.
Определение:Задача получения продукции состоит в
том, чтобы выяснить по заданному набору
исходных продуктов
и результирующему продукту
можно ли с помощью технологических
процессов из
получить выход
по входным продуктам из
.
(Можно
обобщить эту задачу и рассматривать
возможность получения по
некоторого множества результирующих
продуктов
.)
Пример
10.1:Пусть
=
{дерево, клей, гвозди, кирпич, стекло,
окна, полы, стены, крыша, столы}. Множество
технологических процессов
задаётся соответствующими множествами
входов и выходов.
:
{дерево, клей, гвозди }
столы
:
{дерево, гвозди}
полы
:
{дерево, клей, стекло}
окна
:
{стены, полы, крыша}
дача
:
{кирпич, окна, дерево}
стены
Рассмотрим для этой системы технологических процессов задачу получения продукта дача по исходному множеству продуктов: {дерево, клей, гвозди, стекло, кирпич, крыша}.
Нетрудно
понять, что эта задача решается
положительно с помощью следующей цепочки
процессов:
;
;
;
.
Действительно, в
получаются окна, которые используются
в
для получения стен, в
производятся полы, а затем произведённые
ранее стены, полы, крыша используются
в
для получения результата дача.
Подчеркнём, что мы абстрагируемся от количественных оценок исходных и производимых продуктов и считаем, что они всегда даются на входе и производятся в количестве, достаточном для обеспечения «сырьём» всех запускаемых процессов.
Построим формальную модель задачи о производстве с помощью булевых формул.
Будем
рассматривать
как множество булевых переменных.
Каждому процессу
с параметрами
и
сопоставим следующую
-формул
:
![]()
Например,
процессу
из нашего примера соответствует формула
:
(кирпич
& окна & дерево)
стены.
Сохраним
для множества
-формул,
соответствующих процессам, обозначение
.
Справедлива
следующая теорема, которая показывает,
что задача о возможности получения
продукции и задача о следствии из
множества
-формул
эквивалентны.
Теорема:Для любых множества продуктов
,
множества технологических процессов
,
множества исходных продуктов
и результирующего продукта
задача получения продукта
по входным продуктам из
с помощью процессов из
разрешима тогда и только тогда, когда
,
где
.
Доказательство:
Необходимость.
Предположим, что с помощью набора
процессов из множества
из множества исходных продуктов
можно получить
.
Пусть
– это последовательность процессов из
,
которая приводит к получению
.
Докажем, что тогда
.
Рассмотрим произвольный набор значений
переменных
,
на котором истинны все формулы из
.
Если хотя бы для одной переменной
её значение
,
то формула
истинна, поскольку её левая часть ложна.
Предположим теперь, что для любой
переменной
её значение
.
Тогда
индукцией по номеру
процесса
в
покажем, что для каждого
значение соответствующей результирующей
переменной
.
Действительно, при
из применимости процесса
следует, что
,
но тогда
для любой переменной
и левая часть импликации
истинна на наборе
.
Но так как и вся формула
истинна на
,
то и её заключение
тоже истинно на
,
т.е.
.
Пусть теперь для некоторого![]()
при
.
Докажем, что и
.
Поскольку процесс
применим после процессов
,
то
.
Тогда все переменные из
истинны на
и, следовательно,
.
Из
доказанного утверждения следует, что
.
Но так как последовательность
приводит к выпуску
,
то
и, следовательно,
.
Таким образом, формула
истинна на
и условие
выполнено.
Достаточность.
Предположим теперь, что выполнено
условие
.
Опишем построение последовательности
процессов
,
которая приведёт к производству
.
Эта последовательность будет строиться
по шагам. На шаге
вместе с последовательностью
будем определять множество продуктов
,
которые можно произвести, исходя из
с помощью
.
Процедура построения последовательности
завершается, как только в неё включается
некоторый процесс с результатом
,
либо когда на очередном этапе в
не добавляются новые элементы.
Шаг
0.Положим
,
.
Шаг 1.
Положим
и
.
Пусть
уже определены
и
.
Шаг
.
Положим
,
и
(процессы внутри
упорядочиваются в произвольном порядке).
Если
или
,
то положим
и закончим процедуру.
Заметим
вначале, что эта процедура построения
обязательно завершится через конечное
число шагов, так как размер
не может превысить размер множества
всех продуктов
.
Покажем, что процесс построения
завершится на таком шаге
,
для которого впервые
,
т.е. что последовательность процессов
приводит к производству
.
Действительно, предположим, что процедура
завершилась после этапа
из-за выполнения равенства
(при этом
).
Покажем, что тогда существует набор
значений переменных
,
на котором все формулы из
истинны, а формула
ложна. Положим
при
и
при
.
Так как
,
то для каждого
значение
,
а так как
,
то
,
т.е. формула
на наборе
ложна. Каждая формула
для
истинна, поскольку
и, следовательно,
.
Ложной могла бы оказаться лишь такая
формула
,
для такого процесса
,
у которого заключение
.
Но для такого процесса
обязательно имеется продукт
,
который не входит в
(иначе бы
попало в
и процедура не остановилась бы на
-ом
шаге). Для этого
значение
.
Но тогда условие импликации
ложно на
,
а вся формула
на нем истинна. Таким образом, мы пришли
к противоречию, которое показывает, что
и процесс
приводит к производству
.
