Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
71
Добавлен:
02.05.2014
Размер:
455.17 Кб
Скачать

Функционально полной системой называют совокупность таких функций fi,fj,…,fk , что произвольная логическая функция f может быть записана с помощью их суперпозиции. Для этого среди множества функций fi,fj,…,fk должна быть по крайней мере одна функция, не сохраняющая “1”, одна функция, не сохраняющая “0”, одна функция несамодвойственная, одна функция немонотонная и одна нелинейная функция.

Анализ таблицы 31 показывает, что таких {fi,fj,…,fk} может быть много. Например, {f1,f12}, {f7,f10}, {f6,f1,f15}, {f8}, {f14}, {f0,f13} и т.п.

Набор логических связок функционально полной системы порождает базис этой системы F i.

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

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

                  1. F 0={;; ;;;;;} - сигнатура алгебры логики;

                  1. F 1={;; } - базис Буля;

                  1. F 2={; } - базис конъюнктивный;

                  1. F 3={; } - базис дизъюнктивный;

                  1. F 4={;;1} - базис Жегалкина;

                  1. F 5={} - базис Вебба;

                  1. F 6={} - базис Шеффера;

                  1. F 7={; } - базис импликативный и т.д.

В таблицах 32, 33, 34 и 35 приведены формулы в некоторых базисах и для некоторых значений функции f(x1;x2).

Таблица 33.

fi

Формулы в базисах F 0 и F3

f6

(x1x2)=(x1x2)

f7

(x1x2)=(x1x2)(x1x2)

f8

(x1x2)=(x1x2)

f9

(x1x2)=(x1x2)(x1x2)

f13

(x1x2)=(x1x2)

f14

(x1x2)=(x1x2)

Таблица 35.

fi

Формулы в базисах F 0 и F 6

f1

(x1x2)=(x1x2)(x1x2)

f6

(x1x2)=[x1(x2x2)][x2 (x1x1)]

f7

(x1x2)=(x1x2)(x1x2)

f8

(x1x2)=[(x1x1)(x2x2) (x2x2)]

f9

(x1x2)=[(x1x1)(x2x2)] (x1x2)]

f13

(x1x2)=(x1(x2x2).

Таблица 34.

fi

Формулы в базисах F 0 и F 5

f1

(x1x2)=(x1x2)(x1x2)

f6

(x1x2)=[(x1x1)(x2x2)](x1x2)

f7

(x1x2)=(x1x2)(x1x2)

f9

(x1x2)=[x1(x2x2)][x2(x1x1)]

f13

(x1x2)=[x2(x1x1)][x2(x1x1)]

f14

(x1x2)=[(x1x1)(x2x2)] [(x1x1)(x2x2)]

Таблица 32.

fi

Формулы в базисах F 0 и F2

f6

(x1x2)=(x1x2)(x1x2)

f7

(x1x2)=(x1x2)

f8

(x1x2)=(x1x2)

f9

(x1x2)=(x1x2)(x1x2)

f13

(x1x2)=(x1x2)

f14

(x1x2)=(x1x2)

Контрольные вопросы и задачи.

1. Преобразовать формулу F=(x1x2)(x2x3)(x3x1) в формулы:

                  1. над базисом Жегалкина;

                  1. над базисом Вебба;

                  1. над базисом Шеффера;

                  1. над импликативным базисом.

4.10. Минимизация булевых функций.

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

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

Поиск сокращёных, тупиковых и минимальных нормальных форм применим к ДНФ и КНФ формулы булевой функции в силу их двойственности.

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

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

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

Импликанта булевой функции. Пусть существуют две булевые функции f(x1;x2;…;xn) и f(x1;x2;…;xn), которые при одном и том же наборе двоичных переменных имеют значение f(1;2;…;n)=1 и f(1;2;…;n)=1. При этом выполняется условие f(1;2;…;n)f(1;2;…;n)=1. В этом случае говорят, что f(1;2;…;n) имплицирует функцию f(1;2;…;n) и называется импликантой. Если f(1;2;…;n) эквивалентна функции, имеющей меньшее число двоичных переменных, то она покрывает функцию f(1;2;…;n) для нескольких наборов.

x3

(0;0;1) 1

(0;1;1)

(1;0;1)

(1;1;1)

(0;0;0)

1 (0;1;0 )

(1;0;0) 1

x2

x1 (1;1;0 )

Рис. 58. Единичный трёхмерный куб.

Пусть дан трёхмерный единичный куб (см. рис. 58) и булева функция: f(x1;x2;x3)=x1x2x3x1x2x3x1x2x3x1x2x3, которая в вершинах (1;1;1), (1;1;0), (0;1;1) и (0;1;0) имеет значение “1”.

Пусть дана функция f1(x1;x2;x3)=x1x2(x3x3)x1x2(x3x3) x2x3(x1x1)x2x3(x1x1), которая также имеет значение 1 в указанных вершинах куба. Если принять во внимание закон противоречия, согласно которому (x1x1)=1 и (x3x3)=1, то функция f1(x1;x2;x3) эквивалентна функции f1(x1;x2;x3)=x1x2x1x2x2x3x2x3.

Каждая элементарная конъюнкция функции f1(x1;x2;x3) покрывает две вершины, в которых булева функция f(x1;x2;x3)=1. Следовательно, f1(x1;x2;x3) f(x1;x2;x3)=1 при любом заданном наборе двоичных переменных.

Если рассмотреть функцию f2(x1;x2;x3)=x2(x1x1)x2(x3x3), которая равна 1 в указанных вершинах куба, то, используя закон противоречия ещё раз, можно получить функцию f2(x1;x2;x3)=x2x2=x2. Функция f2(x1;x2;x3)=x2=1 покрывает четыре вершины, в каждой из которых булева функция f(x1;x2;x3)=1. Следовательно, f2(x1;x2;x3) f(x1;x2;x3)=1 для любого заданного набора двоичных переменных.

Имплицента булевой функции. Пусть существуют две булевых функции f(x1;x2;……;xn) и f(x1;x2;……;xn), которые при одном и том же наборе двоичных переменных имеют значения f(1;2;……;n)=0 и f(1;2;……;n)=0. При этом выполняется условие : f(1;2;……;n)f(1;2;……;n)=1. В этом случае говорят, что f(1;2;……;n) иплицируется функцией f(1;2;……;n) и называется имплицентой. Если f(1;2;……;n) эквивалентна функции, имеющей меньшее число двоичных переменных, то она покрывает функцию f(1;2;…;n) для нескольких наборов двоичных переменных.

Пусть для того же трёхмерного единичный куба (см. рис.2) дана булева функция:

f(x1;x2;x3)=(x1x2x3)(x1x2x3)(x1x2x3)(x1x2x3).

В вершинах (1;0;0), (1;0;1), (0;0;1) и (0;0;0) булева функция имеет значение равное 0. Пусть дана функция: f1(x1;x2;x3)=(x1x2x3x3)(x1x2x3x3)(x2x3x1x1)(x2x3x1x1), которая также принимает значение 0 в указанных вершинах куба. Используя закон противоречия (x1x1)=0 и (x3x3)=0, имеем эквивалентную формулу: f1(x1;x2;x3)=(x1x2)(x1x2)(x2x3)(x2x3). Каждая элементарная дизъюнкция функции f1(x1;x2;x3) покрывает две вершины, в которых булева функция f(x1;x2;x3)=0. Следовательно, f(x1;x2;x3)f1(x1;x2;x3)=1 при любом заданном наборе двоичных переменных.

Если рассмотреть функцию f2(x1;x2;x3)=(x2x1x1)(x2x3x3), которая равна 0 в указанных вершинах куба, то, используя закон противоречия ещё раз, можно получить функцию f2(x1;x2;x3)=x2x2=x2. Функция f2(x1;x2;x3)=x2=0 покрывает четыре вершины, в каждой из которых булева функция f(x1;x2;x3)=0. Следовательно, f(x1;x2;x3)f2(x1;x2;x3)=1 при любом заданном наборе двоичных переменных.

4.10.1. Метод Квайна.

Минимизация ДНФ булевой функции. Если в СДНФ булевой функции произвести всевозможные операции обобщённого склеивания по правилу:

xFxF=xFxFF,

а затем все операции поглощения по правилу: F1F1F2=F1, то в результате получится сокращённая ДНФ, каждая элементарная конъюнкция которой есть импликанта длины n или (n-1). На втором этапе выполняется операция обобщённого склеивания для импликант длины (n-1), а в результате операции поглощения могут быть получены импликанты длины (n-1) и (n-2). Операции обобщённого склеивания и поглощения выполняются до тех пор, пока можно получать импликанты от меньшего числа двоичных переменных. Импликанты минимальной длины для булевой функции называются простыми.

Например,

f(x1;x2;x3;x4)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4x1x2x3x4.

  • первый этап обобщённого склеивания:

  • f(x1;x2;x3;x4)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x4x1x3x4x1x3x4x1x2x4x2x3x4x1x2x3 x1x2x4x1x2x3x4 x1x2x3x4;

  • первый этап поглощения:

  • f(x1;x2;x3;x4)=x1x2x4x1x2x3x1x3x4x1x2x4x2x3x4x1x2 x3x1x2x4;

  • второй этап обобщённого склеивания:

  • f(x1;x2;x3;x4)=x1x2x4x1x3x4x1x3x4x1x2x4x2x3x4x1x2x3x1x2x4 x1x4x1x4;

  • второй этап поглощения:

f(x1;x2;x3;x4)=x1x4x2x3x4x1x2x3x1x2x4.

Следущий этап обобщённого склеивания не уменьшает длину импликанты. Поэтому на втором этапе получены простые импликанты и тупиковая ДНФ.

Для поиска минимальной ДНФ необходимо удалить из тупиковой ДНФ избыточные простые импликанты. Для этого составляется таблица простых импликант, столбцами которой являются элементарные конъюнкции СДНФ булевой функции - K(i), а строками - простые импликанты тупиковой ДНФ - Kj. Если Kj входят в число элементов K(i), то на пересечении соответствующей строки и столбца ставиться 1, в противном случае 0. Для каждого значения Kj проверяется условие: если Kj(i)ljKl(i)0, то Kj(i) является ядерной импликантой минимальной ДНФ. Этому условию соответствует единственная 1 в столбце для соответствующего Kj. Если в столбце несколько 1, то Kj(i)ljKl(i)1. Удаляя из таблицы все ядерные импликанты и столбцы K(i), в которых они содержат 1, получим сокращённую таблицу неядерных импликант ДНФ, из числа которых следует выбрать простые импликанты с минимальным набором числа двоичных переменных. Ядерные импликанты и набор неядерных импликант из числа простых, покрывающих все “1” таблицы, формирует минимальную ДНФ. В таблице 36 представлены простые импликанты тупиковой ДНФ и элементарные конъюнкции СДНФ для рассматриваемого примера.

Таблица 36.

Простые импликанты

Элементарные конъюнкции СДНФ- K(i)

Kj

x1x2x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x4

[1]

[1]

[1]

1

0

0

0

x1x2x3

0

0

0

0

0

1

1

x1x2x4

0

0

0

0

[1]

1

0

x2x3x4

0

0

0

1

0

0

1


Элементами этой таблицы являются 1, если простая импликанта входит в состав элементарной конъюнкции СДНФ, и - 0, если простая импликанта не входит в состав элементарных конъюнкций СДНФ. Квадратными скобками выделены те 1, для которых выполняется условие ядерной импликанты. Штриховой линией удалены те элементарные конъюнкции СДНФ, которые обеспечиваются ядерными импликантами. Как показал анализ таблицы, ядерными импликантами являются x1x4 и x1x2x4, которые покрывают элементарные конъюнкции СДНФ: (x1x2x3x4), (x1x2x3x4), (x1x2x3x4), (x1x2x3x4), (x1x2x3x4) и (x1x2x3x4). Из всего множества элементарных конъюнкций K(i) осталась непокрытой ядерными импликантами только одна - (x1x2x3x4).

Составим для данного примера сокращённую таблицу неядерных импликант (см. табл. 37). Анализ этой таблицы показывает, что для покрытия элементарной конъюнкции (x1x2x3x4) можно использовать любую простую импликанту.

Таблица 37.

Простые

K(i)

импликанты

Kj

x1x2x3x4

x1x2x3

1

x2x3x4

1

Итак минимальной ДНФ может быть

fmin(x1;x2;x3;x4)=x1x4x1x2x3x1x2x4

или

fmin(x1;x2;x3;x4)=x1x4x2x3x4x1x2x4.

x3

x3

x2

x1

x2

x4

x1

Рис. 59. 4-мерный единичный куб.

На рис. 59 представлен четырёхмерный единичный куб, на котором жирными точками выделены вершины, соответствующие элементарным конъюнкциям СДНФ, заштрихованной плоскостью куба - ядерная импликанта (x1x4), покрывающая четыре элементарных конъюнкции (x1x2x3x4), (x1x2x3x4), (x1x2x3x4) и (x1x2x3x4), жирной линией ребра куба - ядерная импликанта (x1x2x4), покрывающая две элементарные конъюнкции (x1x2x3x4) и (x1x2x3x4) и менее жирными линиями рёбер куба - неядерные импликанты (x1x2x3) и (x2x3x4), необходимые (по выбору) для покрытия одной элементарной конъюнкции СДНФ (x1x2x3x4).