Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
275
Добавлен:
13.02.2015
Размер:
6.31 Mб
Скачать

Раздел 10. Хорновские формулы

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

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

Содержательно, такая Хорновская формула утверждает, что из истинности всех условий набора следует истинность заключения. Утверждения такого вида находят широкое применение в различных разделах информатики. В частности, в теории баз данных такой вид имеют «функциональные зависимости», в логическом программировании – правила логических программ, в автоматическом синтезе программ – «аксиомы вычислимости». В таком же виде формулируются правила вывода во многих экспертных системах.

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

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

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

Предложение: -формула является следствием множества тогда и только тогда, когда формула

(*)

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

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

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

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

Тема 10.1.Задача получения продукции

Пусть задано некоторое множество имён товаров (продуктов, сырья и т.п.) и имеется некоторое множествотехнологических процессов (производств), описывающих возможности получения одних продуктов из других. Каждый технологический процессзадаётся множествомисходных продуктов (входов) этого процесса и результирующим продуктом (выходом), т.е. процесспозволяет из исходных продуктовполучить продукт– его выход. Будем задавать технологический процесс в виде. Продукт, полученный в одном процессе, может далее использоваться в других процессах.

Определение:Задача получения продукции состоит в том, чтобы выяснить по заданному набору исходных продуктови результирующему продуктуможно ли с помощью технологических процессов изполучить выходпо входным продуктам из.

(Можно обобщить эту задачу и рассматривать возможность получения по некоторого множества результирующих продуктов.)

Пример 10.1:Пусть= {дерево, клей, гвозди, кирпич, стекло, окна, полы, стены, крыша, столы}. Множество технологических процессовзадаётся соответствующими множествами входов и выходов.

: {дерево, клей, гвозди } столы

: {дерево, гвозди}полы

: {дерево, клей, стекло}окна

: {стены, полы, крыша}дача

: {кирпич, окна, дерево}стены

Рассмотрим для этой системы технологических процессов задачу получения продукта дача по исходному множеству продуктов: {дерево, клей, гвозди, стекло, кирпич, крыша}.

Нетрудно понять, что эта задача решается положительно с помощью следующей цепочки процессов: ;;;. Действительно, вполучаются окна, которые используются вдля получения стен, впроизводятся полы, а затем произведённые ранее стены, полы, крыша используются вдля получения результата дача.

Подчеркнём, что мы абстрагируемся от количественных оценок исходных и производимых продуктов и считаем, что они всегда даются на входе и производятся в количестве, достаточном для обеспечения «сырьём» всех запускаемых процессов.

Построим формальную модель задачи о производстве с помощью булевых формул.

Будем рассматривать как множество булевых переменных. Каждому процессус параметрамиисопоставим следующую-формул:

Например, процессу из нашего примера соответствует формула:

(кирпич & окна & дерево) стены.

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

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

Теорема:Для любых множества продуктов , множества технологических процессов , множества исходных продуктов и результирующего продукта задача получения продукта по входным продуктам из с помощью процессов из разрешима тогда и только тогда, когда , где .

Доказательство:

Необходимость. Предположим, что с помощью набора процессов из множества из множества исходных продуктовможно получить. Пусть– это последовательность процессов из, которая приводит к получению. Докажем, что тогда. Рассмотрим произвольный набор значений переменных, на котором истинны все формулы из. Если хотя бы для одной переменнойеё значение, то формулаистинна, поскольку её левая часть ложна. Предположим теперь, что для любой переменнойеё значение.

Тогда индукцией по номеру процессавпокажем, что для каждогозначение соответствующей результирующей переменной. Действительно, прииз применимости процессаследует, что, но тогдадля любой переменнойи левая часть импликацииистинна на наборе. Но так как и вся формулаистинна на, то и её заключениетоже истинно на, т.е.. Пусть теперь для некоторогопри. Докажем, что и. Поскольку процессприменим после процессов, то. Тогда все переменные изистинны наи, следовательно,.

Из доказанного утверждения следует, что . Но так как последовательностьприводит к выпуску, тои, следовательно,. Таким образом, формулаистинна наи условиевыполнено.

Достаточность. Предположим теперь, что выполнено условие . Опишем построение последовательности процессов, которая приведёт к производству. Эта последовательность будет строиться по шагам. На шагевместе с последовательностьюбудем определять множество продуктов, которые можно произвести, исходя изс помощью. Процедура построения последовательностизавершается, как только в неё включается некоторый процесс с результатом, либо когда на очередном этапе вне добавляются новые элементы.

Шаг 0.Положим ,.

Шаг 1. Положим и.

Пусть уже определены и.

Шаг . Положим,и(процессы внутриупорядочиваются в произвольном порядке).

Если или, то положими закончим процедуру.

Заметим вначале, что эта процедура построения обязательно завершится через конечное число шагов, так как размерне может превысить размер множества всех продуктов. Покажем, что процесс построениязавершится на таком шаге, для которого впервые, т.е. что последовательность процессовприводит к производству. Действительно, предположим, что процедура завершилась после этапаиз-за выполнения равенства(при этом). Покажем, что тогда существует набор значений переменных, на котором все формулы изистинны, а формулаложна. Положимприипри. Так как, то для каждогозначение, а так как, то, т.е. формулана наборе ложна. Каждая формуладляистинна, посколькуи, следовательно,. Ложной могла бы оказаться лишь такая формула, для такого процесса, у которого заключение. Но для такого процессаобязательно имеется продукт, который не входит в(иначе быпопало ви процедура не остановилась бы на-ом шаге). Для этогозначение. Но тогда условие импликацииложно на, а вся формулана нем истинна. Таким образом, мы пришли к противоречию, которое показывает, чтои процессприводит к производству.