Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
уч пос ДИСКР МАТ1.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
2.31 Mб
Скачать

1.2.7. Построение простых импликант недоопределенных бф методом проб.

Будем полагать, что БФ задана таблично кодами конъюнкций D1 и D0.

Любая конъюнкция К из D1 такова, что:

  1. M1(К)M1(F) - конъюнкция К из множества М1 входит в множество М1(F).

  2. M1(К)M0(F) = - конъюнкция К из множества М1 не входит в множество М0(F) Нет такого набора значений переменных, на котором БФ одновременно определяется равной и 1 и 0.

Если максимально укоротить конъюнкцию К так, чтобы условия 1) и 2) попрежнему выполнялись, то мы получим простую импликанту.

Выполнимость условия 1) вытекает из того, что если К* получена из К вычеркиванием букв, то M1(К*)  M1(К).

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

Если переменная в конъюнкции К вызывает вхождение в M1(К) наборов со значением Хравным , то вычеркивая Х, мы увеличим M1(К) за счет наборов с противоположным значением (1-.

Рассмотрим пример.

Пусть F=(X,Y,Z,W). K= K*=

Тогда M1(К)=(0101,0111).

M1(K*) содержит наборы M1(К) и кроме того наборы (1101,1111).

Процедура построения ДНФ эквивалентной D1, но состоящей из простых импликант может быть такой:

1. Берем любую К конъюнкцию из D1.

2. Максимально укорачивая К, строим простую импликанту и выписываем ее.

3. Удаляем из D1 конъюнкции поглощаемые К.

4. Если D1 пусто кончаем, иначе идем к пункту 1.

Примечание.

Конъюнкция А поглощает конъюнкцию В, если константные значения кода А, то есть все значения кроме «-», входят составной частью в код В.

Рассмотрим пример.

А = ( - 0 0 - ) ;

В = ( - 0 0 1 );

Удаляя из К одну за другой буквы, мы должны проверять не нарушается ли условие 2).

Если нарушается, то букву восстанавливаем, если нет, то оставляем удаленной.

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

Проверка 2) выполняется так.

После вычеркивания буквы, берется код К и поочередно сравнивается со всеми кодами конъюнкций D0. Если для любой пары сравниваемых кодов хотя бы в одном разряде значения противоположны ( 0 и 1), то нет набора, на котором К и D0 одновременно равны «1», а значит можно вычеркивать данную переменную.

В противном случае, вычеркнутая (пробно!) буква должна быть восстановлена, так как ее удаление приводит к нарушению условия 2).

Процедуру построения ДНФ из простых импликант проиллюстрируем примером.

X

Y

Z

W

F

0

0

0

-

1

0

0

-

0

0

-

0

0

-

0

0

0

-

-

1

1

0

1

1

-

1

1

1

1

1


D1 =

D0 =

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

(000-)

?

(-00-)

Если конъюнкция (код -00-) такова, что М1( )М0F~) то тогда есть набор, который можно получить по коду (-00-) и одновременно по коду хотя бы одной конъюнкции из D0

Так как код (-00-) ортогонален каждому коду из D0, то набора принадлежащего и М1( ) и М0F~) не существует.

Ортогональность - наличие противоположных значений 0/1 хотя бы в одном разряде кодов.

Действительно:

(

-

0

0

-

)

(

-

-

1

1

)

(

-

0

0

-

)

(

1

1

-

1

)

(

-

0

0

-

)

(

1

1

1

-

)

Отсюда имеем первое укорачивание и переход к следующему пробному вычеркиванию.

(000-)

(-00-)

?

(--0-)

Вычеркивание недопустимо, так как (--0-) не ортогонально с (11-1). Отсюда следует, что набор 1101 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно и нужно новое пробное вычеркивание. Восстанавливаем вычеркнутую букву.

Пробуем вычеркнуть

(-00-)

?

(-0--)

Вычеркивание недопустимо, так как (-0--) не ортогонально с (--11). Отсюда следует, что набор 0011 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно.

В итоге мы получили .

Константные значения кода (-00-), то есть все значения кроме « - », входят составной частью в коды (000-) и (-000). Следовательно, эта конъюнкция поглощает конъюнкции .

После выполнения поглощения, мы получим следующую таблицу:

X

Y

Z

W

F

0

0

-

0

1

0

-

0

0

-

-

1

1

0

1

1

-

1

1

1

1

-

Берем код 00-0 и выполняем пробное вычеркивание -0-0. Теперь выполним проверку на ортогональность с наборами из М0.

-

0

-

0

-

0

-

0

-

0

-

0

-

-

1

1

1

1

-

1

1

1

1

-

Так как код (-0-0) ортогонален каждому коду из D0, то набора принадлежащего и М1( ) и М0F~) не существует. Вычеркивание возможно.

Далее, попытаемся вычеркнуть следующую букву в коде -0-0. Выполним проверку на ортогональность с наборами из М0 кода ---0.

-

-

-

0

-

-

-

0

-

-

-

0

-

-

1

1

1

1

-

1

1

1

1

-

Вычеркивание недопустимо, так как (---0) не ортогонально с (111-). Отсюда следует, что набор 1110 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно и буква восстанавливается.

Теперь, попытаемся вычеркнуть другую букву в коде -0-0. Выполним проверку на ортогональность с наборами из М0 кода -0---.

-

0

-

-

-

-

1

1

Вычеркивание недопустимо, так как (-0--) не ортогонально с (0011). Отсюда следует, что набор 0011 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно.

Таким образом, получаем уще одну простую импликанту , которая поглощает конъюнкцию .

В результате, у нас остается ода конъюнкция из М1.

X

Y

Z

W

F

0

-

0

0

1

-

-

1

1

0

1

1

-

1

1

1

1

-

Берем оставшийся код 0-00 и выполняем пробное вычеркивание --00. Теперь выполним проверку на ортогональность с наборами из М0.

-

-

0

0

-

-

0

0

-

-

0

0

-

-

1

1

1

1

-

1

1

1

1

-

Так как код (-0-0) ортогонален каждому коду из D0, то набора принадлежащего и М1( ) и М0F~) не существует. Вычеркивание возможно.

Дальнейшие пробные вычеркивания выполняются аналогично.

В итоге получаем F~= .

Рассмотрим еще один пример.

X

Y

Z

W

F~

0

0

0

1

1

0

0

1

0

0

1

1

0

1

0

0

1

0

0

1

1

0

0

1

0

1

1

0

1

1

1

1

1

1

Берем из D1 первую конъюнкцию: и начинам ее укорачивать. Будем работать не с конъюнкциями, а с их кодами.

0 0 0 1

- 0 0 1

Все коды из D0 ортогональны

- - 0 1

Нельзя, так как в как в D0 есть код 0101

- 0 0 1

Восстанавливаем вычеркнутую переменную

- 0 - 1

Нельзя, так как в как в D0 есть код 0011

- 0 0 1

Восстанавливаем вычеркнутую переменную

- 0 0 -

Все коды из D0 ортогональны

Эта конъюнкция поглощает 0001 и 1001 из D1

Берем из D1 следующую конъюнкцию: и начинам ее укорачивать. Будем работать не с конъюнкциями, а с их кодами.

0 0 1 0

- 0 1 0

Все коды из D0 ортогональны

- - 1 0

Все коды из D0 ортогональны

- - - 0

Все коды из D0 ортогональны

Эта конъюнкция поглощает 0010 и 0110 из D1

Множество D1 =

В результате получается F~=