Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 3183 / 269 | Оценка: 4.08 / 3.92 | Длительность: 15:40:00
ISBN: 978-5-9556-0110-6
Специальности: Программист, Математик
Лекция 6:

Хорновские формулы и задача получения продукции

< Лекция 5 || Лекция 6: 123 || Лекция 7 >
Аннотация: Хорновские формулы. Задача получения продукции. Связь между задачей о следствии для Хорновских формул и разрешимостью задачи о продукции. Эффективные алгоритмы прямого поиска (поиска от данных) для решения задачи о продукции

Хорновские формулы

Определим вначале один интересный класс булевых формул - Хорновские формулы.

Определение 6.1. Пусть A - это множество логических (булевых) переменных. Хорновская (H-) формула - это формула вида

(a_1 \wedge a_2 \wedge \ldots \wedge a_r) \rightarrow b,

где a_{i}, b \in  A

Содержательно, такая Хорновская формула утверждает, что из истинности всех условий набора {a1, a2, ... , ar} следует истинность заключения b. Утверждения такого вида находят широкое применение в различных разделах информатики. В частности, в теории баз данных такой вид имеют "функциональные зависимости", в логическом программировании - правила логических программ, в автоматическом синтезе программ - "аксиомы вычислимости". В таком же виде формулируются правила вывода во многих экспертных системах.

В этих и других областях представляют интерес связанные между собой задачи о минимальности набора H-формул и о выводимости некоторой H-формулы из заданного набора H -формул. Первая задача состоит в выяснении того, входит ли в набор H -формул F некоторая формула \phi, которая может быть удалена из F без потери информации, т.е. которая выводится из F \setminus  \{ \varphi \}, а это и есть задача о выводимости. Уточним эту задачу.

Определение 6.2. H-формула \phi является следствием или выводится из множества H-формул F, если на всяком наборе значений переменных из A, на котором истинны все формулы из F, истинна и \phi (будем это обозначать как F\models \phi ).

Это понятие следования некоторой формулы из множества формул можно сформулировать и для произвольных булевых формул, а не только для Хорновских. Следующее простое утверждение показывает, что понятие следования (выводимости) можно переформулировать в терминах тождественной истинности (см. определение 3.4).

Предложение 6.1. H-формула \phi является следствием множества H -формул F тогда и только тогда, когда формула

\left ( \bigwedge_{\psi \in F} \psi \right )  \rightarrow\ \phi ( *)

является истинной на всех наборах значений переменных (т.е. тождественно истинной).

Доказательство непосредственно следует из определения значений конъюнкции и импликации.

Как уже отмечалось в п.3, проблема проверки по булевой формуле ее тождественной истинности является весьма сложной. Известный нам метод такой проверки с помощью построения таблицы значений на всех наборах переменных практически не работает уже для формул с несколькими десятками переменных. В то же время во многих практических задачах число логических параметров исчисляется сотнями. Оказывается, что для установления тождественной истинности формул вида (*) или, что то же самое, для задачи проверки условия F\models \phi для H -формул имеется простой и очень эффективный алгоритм, позволяющий ее решать для формул с сотнями и тысячами переменных.

Мы изложим этот алгоритм на примере одного из интересных "экономических" приложений H-формул - задачи о возможности производства заданной продукции (набора товаров) из некоторого множества исходных продуктов (товаров, сырья).

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

Пусть задано некоторое множество A={ a1, a2, ..., N} имен товаров (продуктов, сырья и т.п.) и имеется некоторое множество F технологических процессов (производств), описывающих возможности получения одних продуктов из других. Каждый технологический процесс t \in  F задается множеством L_{t} \subseteq  A исходных продуктов (входов) этого процесса и результирующим продуктом (выходом) b_{t} \in  A, т.е. процесс t позволяет из исходных продуктов Lt получить продукт bt - его выход. Будем задавать технологический процесс в виде t: Lt -> bt. Продукт, полученный в одном процессе, может далее использоваться в других процессах.

Определение 6.3. Задача получения продукции состоит в том, чтобы выяснить по заданному набору исходных продуктов X \subseteq  A и результирующему продукту y \in  A можно ли с помощью технологических процессов из F получить выход y по входным продуктам из X .

(Можно обобщить эту задачу и рассматривать возможность получения по X некоторого множества результирующих продуктов Y \subseteq  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-формулу \Phi (t):

(a_1 \wedge a_2 \wedge ... \wedge a_r) \rightarrow b_t.

Например, процессу t5 из нашего примера соответствует формула \Phi (t_{5}):

( \textit{кирпич} \wedge  \textit{окна} \wedge \textit{ дерево}) \rightarrow \textit{стены}.

Сохраним для множества H -формул, соответствующих процессам, обозначение F.

Справедлива следующая теорема, которая показывает, что задача о возможности получения продукции и задача о следствии из множества H-формул эквивалентны.

Теорема 6.1. Для любых множества продуктов A, множества технологических процессов F, множества исходных продуктов X \subseteq  A и результирующего продукта y \in  A задача получения продукта y по входным продуктам из X с помощью процессов из F разрешима тогда и только тогда, когда F \models \phi_X \rightarrow y, где \phi_X= \bigwedge_{a\in X} a.

Доказательство \Longrightarrow Предположим, что с помощью набора процессов из множества F={t1, ..., th } из множества исходных продуктов X можно получить y. Пусть \tau =t_{i_1}, \ldots , t_{i_m} - это последовательность процессов из F, которая приводит к получению y. Докажем, что тогда F \models \phi_X \rightarrow y. Рассмотрим произвольный набор значений переменных \bar{\sigma}=
(\sigma(a_1), \ldots , \sigma(a_n)), на котором истинны все формулы из F. Если хотя бы для одной переменной a_{j} \in  X ее значение \sigma (a_{j})=0, то формула \varphi _{X} \to  y истинна, поскольку ее левая часть ложна. Предположим теперь, что для любой переменной a_{j} \in  X ее значение \sigma (a_{j}) =1.

Тогда индукцией по номеру r процесса t_{i_r} в \tau покажем, что для каждого r=1, ..., m значение соответствующей результирующей переменной \sigma(b_{i_r}) =1. Действительно, при r=1 из применимости процесса t_{i_1} следует, что L_{i_1} \subseteq X, но тогда \sigma (a) = 1 для любой переменной a \in
L_{i_1} и левая часть импликации \Phi(t_{i_1}) истинна на наборе \bar{\sigma}. Но так как и вся формула \Phi(t_{i_1}) истинна на \bar{\sigma}, то и ее заключение b_{i_1} тоже истинно на \bar{\sigma}, т.е. \sigma(b_{i_1})
=1. Пусть теперь для некоторого k > 1\ \sigma(b_{i_r}) =1 при r < k. Докажем, что и \sigma(b_{i_k}) =1. Поскольку процесс t_{i_k} применим после процессов t_{i_1},\ldots , t_{i_{k-1}}, то L_{i_k} \subseteq X \cup \{b_{i_r}\ |\ r=1, \ldots , k-1\}. Тогда все переменные из L_{i_k} истинны на \bar{\sigma} и, следовательно, \sigma(b_{i_k}) =1.

Из доказанного утверждения следует, что \sigma(b_{i_m}) =1. Но так как последовательность \tau приводит к выпуску y, то b_{i_m} = y и, следовательно, \sigma(y) =1. Таким образом, формула \varphi _{X} \to  y истинна на \bar{\sigma} и условие F \models \phi_X \rightarrow y выполнено.

\Longleftarrow Предположим теперь, что выполнено условие F \models \phi_X \rightarrow y. Опишем построение последовательности процессов \tau, которая приведет к производству y. Эта последовательность будет строиться по шагам. На шаге i вместе с последовательностью \tau _{i} будем Определять множество продуктов Xi, которые можно произвести, исходя из X с помощью \tau _{i}. Процедура построения последовательности \tau _{i} завершается, как только в нее включается некоторый процесс с результатом y, либо когда на очередном этапе в Xi не добавляются новые элементы.

Шаг 0.Положим \tau _{0}=\varnothing, X0=X.

Шаг 1. Положим \tau _{1} =\{  t \in  F  | L_{t} \subseteq  X_{0}\} и X_{1}= X_{0} \cup  \{  b_{t} | t \in  \tau _{1}\}.

Пусть уже определены \tau _{i} и Xi.

Шаг i+1. Положим \tau _{i+1}' =\{  t \in  (F \setminus  \tau _{i})  | L_{t} \subseteq  X_{i}\}, X_{i+1}= X_{i} \cup   \{  b_{t}  | t \in  \tau _{i+1}'\} и \tau _{i+1} = \tau _{i} \tau _{i+1}' ( процессы внутри \tau _{i+1}' упорядочиваются в произвольном порядке).

Если y \in  X_{i+1} или Xi=Xi+1, то положим \tau  =  \tau _{i+1} и закончим процедуру.

Заметим вначале, что эта процедура построения \tau обязательно завершится через конечное число шагов, так как размер Xi не может превысить размер множества всех продуктов A. Покажем, что процесс построения \tau завершится на таком шаге (i+1), для которого впервые y \in  X_{i+1}, т.е. что последовательность процессов \tau приводит к производству y. Действительно, предположим, что процедура завершилась после этапа (i+1) из-за выполнения равенства Xi=Xi+1 (при этом y \notin  X_{i+1}. Покажем, что тогда существует набор значений переменных \bar{\sigma}= (\sigma(a_1), \ldots , \sigma(a_n)),\ на котором все формулы из F истинны, а формула \varphi _{X} \to  y ложна. Положим \sigma (a)=1 при a \in  X_{i+1} и \sigma (a)=0 при a \notin  X_{i+1}. Так как X \subseteq  X_{0}\subseteq  X_{i+1}, то для каждого a \in  X значение \sigma (a)=1, а так как y \notin  X_{i+1}, то \sigma (y)=0, т.е. формула \varphi _{X} \to  y на наборе \bar{\sigma} ложна. Каждая формула \Phi (t) \ для t \in  \tau _{i+1} истинна, поскольку b_{t} \in  X_{i+1} и, следовательно, \sigma (b_{t})=1. Ложной могла бы оказаться лишь такая формула \Phi (t), для такого процесса t \in  F, у которого заключение b_{t} \notin  X_{i+1}. Но для такого процесса t обязательно имеется продукт a \in  L_{t}, который не входит в Xi (иначе бы bt попало в Xi+1 и процедура не остановилась бы на (i+1) -ом шаге). Для этого a значение \sigma (a)=0. Но тогда условие импликации \Phi (t) ложно на \bar{\sigma}, а вся формула \Phi (t) на нем истинна. Таким образом, мы пришли к противоречию, которое показывает, что y \in  X_{i+1} и процесс \tau приводит к производству y.

< Лекция 5 || Лекция 6: 123 || Лекция 7 >
Елена Алексеевская
Елена Алексеевская

Это в лекции 3.

Татьяна Дембелова
Татьяна Дембелова

Почему в вводной лекции курса Основы дискретной математики одним из свойств отношения частичного порядка упоминается антирефлексивность? Посмотрела в других источниках, там -0  рефлексивность... http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0