Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритм 1




Работа алгоритма состоит из трех этапов.

Этап 1. Умножение логических скобок с использованием закона дистрибутивности.

Этап 2. Упрощение полученной на этапе 1 д.н.ф. с использованием правил , , (устранение повторяющихся конъюнкций и замена не элементарных конъюнкций на элементарные).

Этап 3. Устранение элементарных поглощений с применением равенства .

Таким образом, сначала строятся все допустимые конъюнкции для (этапы 1 и 2), а затем из построенного множества конъюнкций удаляются конъюнкции, не являющиеся неприводимыми.

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

Алгоритм 2. Алгоритм основан на построении на каждом шаге так называемой «тупиковой» конъюнкции для и отбора среди построенных «тупиковых» конъюнкций допустимых конъюнкций.

Определение. Э.к. являетсятупиковой для конъюнкцией, если она неприводимая для и не существует неприводимой для конъюнкции такой, что .

Утверждение 4. Если э.к. является максимальной для , то она является тупиковой для .

Доказательство. Пусть э.к. является максимальной для . Предположим, что не является тупиковой для . Тогда найдется неприводимая конъюнкция такая, что . Отсюда и из того, что , следует, что . Таким образом, - неприводимая и допустимая конъюнкция для , т.е. максимальная конъюнкция для . Противоречие. Утверждение доказано.

Обратное утверждение не верно (тупиковая конъюнкция может не быть допустимой).

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

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

Будем считать, что переменные в перенумерованы в порядке следования дизъюнкций (скобок), а в каждой скобке слева направо.

Шаг 1. Возьмем первую по порядку переменную в . Пусть это будет . Удалим из все дизъюнкции, содержащие . Из остальных дизъюнкций удалим переменные, встречающиеся в и переменную . Полученную в результате КНФ обозначим через . Положим = и построим вершину первого яруса первой ветви вида . Возможны три следующих случая.

1) Все скобки вычеркнуты, тогда – тупиковая конъюнкция, являющаяся также допустимой. Первая ветвь построена. Висячей вершине соответствует максимальная конъюнкция.

2) Не все скобки вычеркнуты, но вычеркнуты все переменные в скобках, тогда – тупиковая конъюнкция, не являющаяся допустимой. Первая ветвь построена. На данном шаге не найдена максимальная конъюнкция.

3) Если не все скобки вычеркнуты и в невычеркнутых скобках остались невычеркнутые переменные, то повторяем итерацию. На второй итерации будет построена вершина , где - конъюнкция ранга 2 вида ; - первая по порядку переменная в ; КНФ получена из удалением скобок, содержащих , и удалением из оставшихся скобок переменной и переменных, встречающихся в скобке, из которой была выбрана переменная . Процесс построения первой ветви продолжаем до тех пор пока не возникнет один из случаев 1 или 2.

Шаг . Пусть на шаге построена ветвь с висячей вершиной , где .

Если и не является переменной с максимальным номером, то строится ветвь, исходящая из вершины первого яруса, где следует за в в соответствии с установленным порядком (рассуждения те же, что и в шаге 1, с заменой на ).

Если и является переменной с максимальным номером, то алгоритм заканчивает работу.

Если , то возвращаемся на предыдущий ярус (ярус с номером ) в вершину построенной ветви, где .

Если содержит переменные, следующие за , то выбираем из них переменную , первую по порядку. Начинаем строить ветвь, исходящую из вершины (рассуждения те же, что и в шаге 1, с заменой на и на ).

Если в нет переменных, следующих за , и , то возвращаемся на ярус с номером построенной ветви в вершину , где и берем переменную , следующую за переменной в . Очевидно такая переменная найдется, так как по построению следует за в . Строим ветвь, исходящую из вершины ( рассуждения те же, что и в шаге 1, с заменой на и на ).

Если же в нет переменных, следующих за и , то строится ветвь, исходящая из вершины первого яруса вида , где следует за в (рассуждения те же, что и в шаге 1, с заменой на ).

Рассмотрим теперь случай не всюду определенных (частичных) функций алгебры логики.

Пусть функция задана на множестве и принимает значения 0 и 1. Множество разбивается на два подмножества и (=), на которых функция принимает соответственно значение 1 и 0. На наборах из \функция не определена.

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

Будем говорить, что д.н.ф. реализует частичную функцию , если , =.

Данные в лекции 4 определения допустимой, почти допустимой, неприводимой и максимальной конъюнкции всюду определенной булевой функции полностью переносятся на случай частичной булевой функции. Утверждения о минимальной и кратчайшей д.н.ф. сохраняются.

Для построения сокращенной д.н.ф. частичной булевой функции обычно используется следующий прием. Строится сокращенная д.н.ф. всюду определенной булевой функции такой, что . Затем из удаляются все конъюнкции такие, что =.

Альтернативный способ построения сокращенной д.н.ф. частичной булевой функции основан на многократном решении задачи построения сокращенной д.н.ф. монотонной булевой функции.

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

Утверждение 5. Э.к. является максимальной для тогда и только тогда, когда можно указать , , такое, что э.к. является максимальной для и при координата с номером набора равна .




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 1001; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.