Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дехтярь М.И. Основы дискретной математики. Лекц...docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
864.55 Кб
Скачать

Задача получения продукции

Пусть задано некоторое множество 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.