- •Задания для самостоятельной работы к разд.4.1.1
- •4.1.2 Булева алгебра. Эквивалентные преобразования формул. Двойственные и самодвойственные функции. Алгебра жегалкина
- •Задания для самостоятельной работы к разд.4.1.2
- •4.1.3. Специальные виды формул Разложение функции по переменным. Представление логических функций бинарным графом
- •Совершенная дизъюнктивная и конъюнктивная нормальные формы
- •Совершенная полиномиальная нормальная форма. Полином Жегалкина. Линейные функции
- •Задания для самостоятельной работы к разд. 4.1.3
- •4.1.4 Минимизация булевых функций
- •Метод Квайна
- •1 Этап. Получение сокращенной днф.
- •2 Этап. Получение минимальной (или одной из тупиковых) днф.
- •Метод Блейка-Порецкого
- •Задания для самостоятельной работы к разд. 4.1.4
- •4.2. Функционально-полные системы логических функций.
- •4.2.1. Установление функциональной полноты системы логических функций путем ее сведения к заведомо полной системе
- •4.2.2. Замкнутые классы. Монотонные функции. Критерий функциональной полноты
- •Задания для самостоятельной работы к разд. 4.2
- •Вопросы для повторения
- •Резюме по теме
2 Этап. Получение минимальной (или одной из тупиковых) днф.
Для получения МДНФ необходимо убрать из сокращенной ДНФ все лишние простые импликанты. Это делается с помощью специальной импликантной матрицы Квайна. Строки такой матрицы отмечаются простыми импликантами, т.е., членами сокращенной ДНФ, а столбцы - конституентами единицы, т.е., членами СДНФ логической функции. Если простая импликанта поглощает некоторую конституенту единицы, то соответствующая клетка матрицы Квайна, на пересечении строки с рассматриваемой простой импликантой, и столбца с конституентой единицы отмечается значком – *. Минимальные ДНФ строятся по импликантной матрице следующим образом:
ищутся столбцы импликантной матрицы, имеющие одну *. Соответствующие этим * простые импликанты называются базисными и составляют так называемое ядро логической функции. Ядро обязательно входит в МДНФ.
рассматриваются различные варианты выбора совокупности простых импликантов, которые накроют остальные столбцы импликантной матрицы, и выбираются варианты с минимальным суммарным числом букв в такой совокупности импликантов.
Пример 4.1 (продолжение).
Импликантная
матрица представлена табл.4.9. Ядром
нашей функции являются импликанты
,
,
.
Импликант
– лишний, т.к. ядро накрывает все столбцы
импликантной матрицы. Поэтому, функция
имеет единственную тупиковую и минимальную
ДНФ
.
Таблица 4.9
Простые импли-канты |
Номера конституент единицы |
||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
* |
* |
* |
* |
|
|
|
|
|
|
|
* |
|
|
* |
|
|
|
|
|
|
* |
* |
|
* |
|
|
|
* |
|
|
Пример
4.2. Минимизировать булеву функцию
методом Квайна:
1. Получим функцию в СДНФ
2. Найдем сокращенную ДНФ функции f, произведя все возможные склеивания и поглощения:
3.
Получим МДНФ функции
по импликантной матрице (табл. 4.10). Ядро
булевой функции:
.
Функция имеет две тупиковые ДНФ. Они же
являются минимальными ДНФ
Таблица 4.10
Простые импли-канты |
Конституенты |
||||
|
|
|
|
|
|
|
* |
* |
|
|
|
|
|
* |
|
|
* |
|
* |
|
* |
|
|
|
|
|
* |
* |
|
При
программной реализации метода Квайна
конъюнкции, подлежащие склеиванию,
разбивают на группы. В i-ю группу
включают конъюнкции, содержащие i
переменных без отрицания. Тогда на
склеивание нужно проверять только
конъюнкции соседних групп, при этом
перебор сокращается. Сами конъюнкции
удобно кодировать двумя двоичными
векторами
(вектор вхождения) и
(вектор обращения), элементы которых
определяются следующим образом:
Например,
конъюнкция
может быть сохранена с помощью векторов
и
.
Данные вектора удобно хранить в битовой
форме.
При большом числе аргументов наиболее трудоемким является этап, связанный с отысканием наилучшего покрытия импликантной матрицы (сокращенная ДНФ и сама матрица находятся сравнительно быстро). Поэтому, для осуществления этого этапа обычно используют приближенные методы, не гарантирующие нахождения МДНФ. Один из таких методов состоит в следующем:
Ищется ядро логической функции. Столбцы, покрытые ядром, вычеркиваются из таблицы.
Дальнейший выбор импликантов осуществляется с использованием следующей пошаговой процедуры. В новой таблице берется строка с наибольшим числом символов * (если таких строк несколько, то любая из них). Эта строка и столбцы, в которых она содержит * из таблицы вычеркиваются, а соответствующий ей импликант включается в покрытие. К полученной таблице применяется та же операция и т.д., пока все столбцы не окажутся вычеркнутыми.
Если требуется нахождение всех тупиковых ДНФ (всех покрытий импликантной матрицы), то можно воспользоваться следующим методом (метод Петрика). По импликантной матрице строится так называемое конъюнктивное представление матрицы. Для этого все строки (простые импликанты) обозначаются разными буквами. После этого, для каждого i-го столбца матрицы строится дизъюнкция всех букв, обозначающих строки матрицы, пересечение которых с i-м столбцом отмечено *. Конъюнктивное представление матрицы образуется как конъюнкция построенных дизъюнкций для всех столбцов матрицы. К конъюнктивному представлению матрицы могут быть применены все соотношения булевой алгебры с целью его упрощения. После раскрытия скобок и выполнения всех возможных поглощений получается дизъюнкция конъюнкций, каждая из которых соответствует покрытию матрицы, т.е, тупиковой ДНФ функции.
Пример 4.3. Импликантная матрица функции задана табл.4.10. Найти методом Петрика все тупиковые ДНФ функции . Имеющиеся простые импликанты обозначим буквами:
Тогда конъюнктивное представление матрицы имеет вид
После
упрощения получим
Т.о., функция имеет две тупиковые ДНФ:
