Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
minimizacija_DNF.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
155.14 Кб
Скачать

3.2.2 Определение ядра

Вторым шагом алгоритма Квайна – Мак-Клоски является нахождение ядра ДНФ. Говорят, что элементарная конъюнкция К покрывает элементарную конъюнкцию L (пишут K < L), если любой литерал, входящий в К, входит и в L. Так, х1х2 > x1x2x3, x1x3 > x1¬x2x3, но x1x3 не покрывает x1x2¬x3, поскольку вторая конъюнкция содержит литерал ¬x3, отсутствующий в первой конъюнкции. Легко видеть, что если K > L, то K + L = K (согласно тождествам поглощения).

Каждая входящая в сокращенную ДНФ склейка покрывает некоторую элементарную конъюнкцию исходной СДНФ. На карте Карно этому отвечает прямоугольник, "закрывающий" соответствующую единицу.

Склейку называют ядровой, если она покрывает некоторую элементарную конъюнкцию исходной СДНФ, не покрываемую никакой другой склейкой. На карте Карно прямоугольник, соответствующий ядровой склейке, отыскивается очень просто: это такой прямоугольник, удалив который получим единицу, не покрываемую никаким другим прямоугольником. Тогда ни одна ядровая склейка не может быть удалена из искомой минимальной ДНФ исходной функции, т.е. все ядровые склейки обязательно войдут в минимальную ДНФ.

Множество всех ядровых склеек сокращенной ДНФ называют ядром.

Рисунок 3.8

Рисунок 3.9

Пример: СДНФ, представляющая мажоритарную функцию (функцию голосования) имеет вид: ¬x1x2x3 + x1¬x2x3 + x1x2¬x3 + x1x2x3. Имеем следующие склейки (в виду простоты выполним склейки без карты Карно): ¬x1x2x3 + x1x2x3 = x2x3;

x1¬x2x3 + x1x2x3 = x1x3;

x1x2¬x3 + x1x2x3 = x1x2.

Сокращенная ДНФ принимает вид: x1x2 + x1x3 + x2x3. У мажоритарной функции все склейки являются ядровыми.

У функции, изображенной на карте Карно на рисунке 3.8, ядро пусто, то есть ядровых склеек нет вообще.

На карте Карно на рисунке 3.9 в ядро попадают склейки 0хх1, 0х1х, 1х00.

Если все склейки оказались в ядре, то сокращенная ДНФ и есть единственная минимальная и кратчайшая ДНФ для данной функции. Именно так обстоит дело с мажоритарной функцией. В противном случае смотрят, не эквивалентна ли ДНФ, построенная как дизъюнкция всех ядровых склеек, исходной СДНФ. Это будет иметь место тогда и только тогда, когда ядровые склейки покрывают в совокупности все элементарные конъюнкции исходной СДНФ. На карте Карно тогда каждая клетка, содержащая единицу, должна быть закрыта прямоугольником, отвечающим некоторой ядровой склейке. Если это так, то ДНФ, построенная по ядру, есть минимальная и кратчайшая (склейки ядра закрыли все единицы карты Карно). При этом склейки, не попавшие в ядро, оказываются "избыточными", т.е. их удаление из сокращенной ДНФ не приводит к нарушению эквивалентности сокращенной ДНФ и исходной СДНФ.

В остальных случаях переходят к отысканию так называемых тупиковых ДНФ.

3.2.3 Перечисление тупиковых днф

Простую склейку называют избыточной, если ее можно удалить из ДНФ без потери ее эквивалентности исходной СДНФ. Так, сокращенная ДНФ (рисунок 3.9) содержит избыточные склейки: склейка 10х0 или склейка х010 может быть удалена (но не обе сразу!). Это значит, что каждая из этих склеек является избыточной, но удаление одной из них приводит к новой ДНФ, для которой вторая склейка уже не будет избыточной. В случае, когда каждую элементарную конъюнкцию исходной СДНФ покрывает некоторая ядровая склейка, не вошедшие в ядро склейки можно удалить одновременно.

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

Любую ДНФ, эквивалентную исходной СДНФ, содержащую все ядровые склейки и не содержащую ни одной избыточной склейки, называют тупиковой.

Заметим, что в силу конечности множества всех склеек тупиковая ДНФ обязательно существует, т.е. в упомянутом процессе мы рано или поздно доберемся до такого момента, когда удаление хотя бы одной склейки приведет к тому, что "откроется" какая-то единичная клетка на карте Карно и тем самым будет потеряна эквивалентность полученной таким образом ДНФ исходной СДНФ.

Для СДНФ, карта Карно которой приведена на рисунке 3.9, имеются две тупиковые ДНФ:

¬x1x4 + ¬x1x3 + x1¬x3¬x4 + ¬x2x3¬x4,

¬x1x4 + ¬x1x3 + x1¬x3¬x4 + x1¬x2¬x4.

Первые три конъюнкции соответствуют ядру.

В общем случае для перечисления всех тупиковых ДНФ может быть использован следующий алгоритм. Присвоим каждой склейке сокращенной ДНФ некоторое имя, т.е. обозначим их, например, К1, К2, …, Кm. Для любой единицы карты Карно, не покрываемой ядром, перечислим все простые склейки, которые ее покрывают. Запишем дизъюнкцию таких склеек. К i принимает по определению значение 1, если К i выбирается для покрытия рассматриваемой единицы карты Карно.

Записав все дизъюнкции, составим из них КНФ. Рассмотрим карту Карно на рисунке 3.8. Обозначим

K1 = x1¬x2 [10x], K2 = ¬x2x3 [x01], K3 = ¬x1x3 [0x1],

K4 = ¬x1x2 [01x], K5 = x2¬x3 [x10], K6 = x1¬x3 [1x0].

Получим КНФ:

1 + К6)(К1 + К2)(К2 + К3)(К3 + К4) (К4 + К5)(К5 + К6). (*)

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

Для нашего примера поступим так: вычислим конъюнкцию первой и второй скобки в выражении (*), а также третьей и четвертой, пятой и шестой скобок. Тогда получим:

1 + К1К2 + К6К1 + К6К2)(К2К3 + К2К4 + К3 + К3К4)(К4К5 + К4К6 + К5 + К5К6).

С помощью формулы поглощения в первой скобке удалим все члены, содержащие К1, во второй – К3, в третьей – К5. Затем раскроем все три скобки и применим еще раз тождество поглощения. Окончательно получим:

К1К3К5 + К1К3К4К6 + К1К2К4К5 + К2К3К5К6 + К2К4К6. (**)

Элементарные конъюнкции в (**) определяют тупиковые ДНФ. Более того, так как в этом случае отсутствует ядро (см. пример п. 3.2.2), то найденные конъюнкции исчерпывают тупиковые ДНФ. Первая тупиковая ДНФ состоит из конъюнкций К1, К3 и К5, т.е. имеет вид:

х1¬х2 + ¬х1х3 + х2¬х3.

Точно так же определяются остальные тупиковые ДНФ.

Обоснование описанного выше алгоритма может быть получено из следующих соображений. Функция Патрика, представленная КНФ, принимает значение 1 тогда и только тогда, когда каждая элементарная дизъюнкция принимает значение 1. А элементарная дизъюнкция принимает значение 1 в том и только в том случае, когда хотя бы одна переменная принимает значение 1. Согласно определению функции Патрика, это значит, что хотя бы одна склейка выбрана для покрытия соответствующей единицы на карте Карно. Поскольку таким образом перебираются все не покрываемые ядром единицы карты Карно, то гарантируется эквивалентность искомой ДНФ исходной СДНФ. Однако, когда функция Патрика представлена ДНФ и мы выбираем в точности одну из ее элементарных конъюнкций, полагая, что все входящие в нее переменные равны 1, мы тем самым из всех возможных вариантов покрытия каждой 1 на карте Карно выбираем в точности один вариант. Значит, полученная в результате такого выбора ДНФ для исходной СДНФ действительно будет тупиковой.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]