
- •Лекция: Предварительные сведения
- •Множества
- •Операции над множествами
- •Как доказывать равенство множеств?
- •Отношения и функции. Мощность множества
- •2. Лекция: Индукция и комбинаторика Содержание
- •Метод математической индукции
- •Элементы комбинаторики
- •Размещения, перестановки, сочетания
- •Принцип включения и исключения
- •Лекция: Булевы функции и их представления Содержание
- •Булевы функции от n переменных
- •Геометрическое представление
- •Табличное представление
- •Булевы функции от 1-ой и 2-х переменных
- •Формулы
- •Булевы функции и логика высказываний
- •Эквивалентные преобразования формул Соглашения об упрощенной записи формул.
- •Дизъюнктивные и конъюнктивные нормальные формы Определение днф и кнф
- •Совершенные днф и кнф
- •Сокращенные днф
- •Многочлены Жегалкина
- •Лекция: Полные системы функций и теорема Поста Содержание
- •Замкнутые классы функций
- •Критерий полноты (теорема Поста)
- •6. Лекция: Хорновские формулы и задача получения продукции Содержание
- •Хорновские формулы
- •Задача получения продукции
- •Решение задачи о продукции
- •Алгоритм замыкание(X,f)
- •Алгоритм ПрямаяВолна(X,y,f)
- •Алгоритм БыстроеЗамыкание(X,f)
- •Лекция: Язык логики предикатов
- •Утверждения о свойствах объектов и отношениях между ними
- •Язык логики предикатов
- •Синтаксис: формулы логики предикатов
- •Семантика: системы и значения формул на их состояниях
- •Эквивалентные формулы и нормальные формы
Задача получения продукции
Пусть задано некоторое множество A={ a1, a2, …, N} имен товаров (продуктов, сырья и т.п.) и имеется некоторое множество F технологических процессов (производств), описывающих возможности получения одних продуктов из других. Каждый технологический процесс t F задается множеством Lt A исходных продуктов (входов) этого процесса и результирующим продуктом (выходом) bt A, т.е. процесс t позволяет из исходных продуктов Lt получить продукт bt - его выход. Будем задавать технологический процесс в виде t: Lt bt. Продукт, полученный в одном процессе, может далее использоваться в других процессах.
Определение 6.3. Задача получения продукции состоит в том, чтобы выяснить по заданному набору исходных продуктов X A и результирующему продукту y A можно ли с помощью технологических процессов из F получить выход y по входным продуктам из X.
(Можно обобщить эту задачу и рассматривать возможность получения по X некоторого множества результирующих продуктов Y A.)
Пример 6.1. Пусть A= { дерево, клей, гвозди, кирпич, стекло, окна, полы, стены, крыша, столы}. Множество технологических процессов F={t1, t2, t3, t4, t5, t6} задается соответствующими множествами входов и выходов.
t1: { дерево, клей, гвозди } столы
t2: { дерево, гвозди} полы
t3: { дерево, клей, стекло} окна
t4: { стены, полы, крыша} дача
t5: { кирпич, окна, дерево} стены
t6: { дерево, гвозди } столы
Рассмотрим для этой системы технологических процессов задачу получения продукта дача по исходному множеству продуктов: {дерево, клей, гвозди, стекло, кирпич, крыша}.
Нетрудно понять, что эта задача решается положительно с помощью следующей цепочки процессов: t3; t5; t2; t4. Действительно, в t3 получаются окна, которые используются в t5 для получения стен, в t2 производятся полы, а затем произведенные ранее стены, полы, крыша используются в t4 для получения результата дача.
Подчеркнем, что мы абстрагируемся от количественных оценок исходных и производимых продуктов и считаем, что они всегда даются на входе и производятся в количестве, достаточном для обеспечения "сырьем" всех запускаемых процессов.
Построим формальную модель задачи о производстве с помощью булевых формул.
Будем рассматривать A как множество булевых переменных. Каждому процессу t с параметрами Lt={a1,… , ar} и bt сопоставим следующую H-формулу Φ(t):
Например, процессу t5 из нашего примера соответствует формула Φ(t5):
Сохраним для множества H-формул, соответствующих процессам, обозначение F.
Справедлива следующая теорема, которая показывает, что задача о возможности получения продукции и задача о следствии из множества H-формул эквивалентны.
Теорема
6.1.
Для любых множества продуктов A,
множества технологических
процессов
F,
множества исходных продуктов X
A
и результирующего продукта y
A
задача получения продукта y
по входным продуктам из X
с помощью процессов из F
разрешима тогда и только тогда, когда
,
где
.
Доказательство
Предположим, что с помощью набора
процессов из множества F={t1,
…, th
}
из множества исходных продуктов X
можно получить y.
Пусть
-
это последовательность процессов из
F,
которая приводит к получению y.
Докажем, что тогда
.
Рассмотрим произвольный набор значений
переменных
,
на котором истинны все формулы из F.
Если хотя бы для одной переменной aj
X
ее значение σ(aj)
=0,
то формула
X
y
истинна, поскольку ее левая часть ложна.
Предположим теперь, что для любой
переменной aj
X
ее значение σ(aj)
=1.
Тогда
индукцией по номеру r
процесса
в
τ
покажем, что для каждого r=1,
…, m
значение соответствующей результирующей
переменной
.
Действительно, при r=1
из применимости процесса
следует,
что
,
но тогда σ(a)
= 1
для любой переменной
и
левая часть импликации
истинна
на наборе
.
Но так как и вся формула
истинна
на
,
то и ее заключение
тоже
истинно на
,
т.е.
.
Пусть теперь для некоторого k
> 1\
при
r
< k.
Докажем, что и
.
Поскольку процесс
применим
после процессов
,
то
.
Тогда все переменные из
истинны
на
и,
следовательно,
.
Из
доказанного утверждения следует, что
Но
так как последовательность τ
приводит к выпуску y,
то
и,
следовательно,
Таким
образом, формула
X
y
истинна на
и
условие
выполнено.
Предположим
теперь, что выполнено условие
.
Опишем построение последовательности
процессов τ,
которая приведет к производству y.
Эта последовательность будет строиться
по шагам. На шаге i
вместе с последовательностью τi
будем Определять множество продуктов
Xi,
которые можно произвести, исходя из X
с помощью τi.
Процедура построения последовательности
τi
завершается, как только в нее включается
некоторый процесс с результатом y,
либо когда на очередном этапе в Xi
не добавляются новые элементы.
Шаг 0.Положим τ0= , X0=X.
Шаг 1. Положим τ1 ={ t F | Lt X0} и X1= X0 { bt | t τ1}.
Пусть уже определены τi и Xi.
Шаг i+1. Положим τi+1' ={ t (F \ τi) | Lt Xi}, Xi+1= Xi { bt | t τi+1'} и τi+1 = τi τi+1' ( процессы внутри τi+1' упорядочиваются в произвольном порядке).
Если y Xi+1 или Xi=Xi+1, то положим τ = τi+1 и закончим процедуру.
Заметим
вначале, что эта процедура построения
τ
обязательно завершится через конечное
число шагов, так как размер Xi
не может превысить размер множества
всех продуктов A.
Покажем, что процесс построения τ
завершится на таком шаге (i+1),
для которого впервые y
Xi+1,
т.е. что последовательность процессов
τ
приводит к производству y.
Действительно, предположим, что процедура
завершилась после этапа (i+1)
из-за выполнения равенства Xi=Xi+1
(при этом y
Xi+1.
Покажем, что тогда существует набор
значений переменных
на
котором все формулы из F
истинны, а формула
X
y
ложна. Положим σ(a)=1
при a
Xi+1
и σ(a)=0
при a
Xi+1.
Так как X
X0
Xi+1,
то для каждого a
X
значение σ(a)=1,
а так как y
Xi+1,
то σ(y)=0,
т.е. формула
X
y
на наборе
ложна.
Каждая формула Φ(t)\
для t
τi+1
истинна, поскольку bt
Xi+1
и, следовательно, σ(bt)=1.
Ложной могла бы оказаться лишь такая
формула Φ(t),
для такого процесса t
F,
у которого заключение bt
Xi+1.
Но для такого процесса t
обязательно имеется продукт a
Lt,
который не входит в Xi
(иначе бы bt
попало в Xi+1
и процедура не остановилась бы на
(i+1)-ом
шаге). Для этого a
значение σ(a)=0.
Но тогда условие импликации Φ(t)
ложно на
,
а вся формула Φ(t)
на нем истинна. Таким образом, мы пришли
к противоречию, которое показывает, что
y
Xi+1
и процесс τ
приводит к производству y.