2.2.2.3. Построение всех тупиковых ДНФ
Определение. Тупиковой ДНФ (ТДНФ) функции f называется такая ДНФ ее простых импликант, из которых нельзя выбросить ни одного импликанта, не изменив функции f.
Теорема. Всякая минимальная ДНФ некоторой функции является ее тупиковой ДНФ.
Для получения МДНФ функции f необходимо построить все ТДНФ функции f и выбрать те из них, которые содержат минимальное число букв.
Алгоритм построения всех тупиковых ДНФ.
Пусть f(x1, x2, …, xn) есть булева функция.
Шаг 1. Построим СДНФ функции f и пусть P1, P2, …,Pn есть ее конституенты (единицы).
Шаг 2. Построим сокращенную ДНФ функции f и пусть К1, К2, …, Кm – ее простые импликанты.
Шаг 3. Построим матрицу покрытий простых импликант функции f ее коституентами единицы (табл. 34), полагая, что
Таблица 34
N | P1 | P2 | … | Pj | … | Pn |
K1 | a11 | a12 | … | a1j | … | a1n |
K2 | a21 | a22 | … | a2j | … | a2n |
Ki | ai1 | ai2 | … | aij | … | ain |
Km | am1 | am2 | … | amj | … | amn |
Шаг 4. Для каждого столбца j (1 £ j £ n)найдем множество Ej всех тех номеров i строк, для которых aij=1. Пусть Составим выражение
Назовем его решеточным выражением. Это выражение можно рассматривать как формулу, построенную в свободной дистрибутивной решетке с образующими 1, 2, …, m и с операциями конъюнкции и дизъюнкции.
Шаг 5. В выражении А раскроем скобки приведя выражение А к равносильному выражению , где перечислены все конъюнкции
элементы ei1, ei2, …, ein которой взяты из скобок 1, 2, …, n соответственно в выражении А.
Шаг 6. В выражении В проведем все операции удаления дублирующих членов и все операции поглощения. В результате получим равносильное выражение С, представляющее собой дизъюнкцию элементарных конъюнкций.
Пример 38.
Построить все минимальные ДНФ для функции f=1111010010101111.
Решение.
Сокращенная ДНФ для данной функции имеет вид
Строим матрицу покрытий (табл. 35).
Таблица 35
№ | Простые импликанты | Конституенты единицы функции f | |||||||||||||
x1 | x2 | x3 | x4 | 0000 | 0001 | 0010 | 0011 | 0101 | 1000 | 1010 | 1100 | 1101 | 1110 | 1111 | |
1 | 1 | 1 | - | - | + | + | + | + | |||||||
2 | 0 | 0 | - | - | + | + | + | + | |||||||
3 | - | 0 | - | 0 | + | + | + | + | |||||||
4 | 1 | - | - | 0 | + | + | + | + | |||||||
5 | 0 | - | 0 | 1 | + | + | |||||||||
6 | - | 1 | 0 | 1 | + | + |
Пошагово будем выбирать слагаемые, которые войдут в минимальную ДНФ.
Если слагаемое нами выбрано, то мы помечаем конституенты единицы функции f, которые будут покрыты (по строке). При этом автоматически исключаем из рассмотрения конституенты единицы, которые уже покрыты, но относятся к другим слагаемым сокращенной ДНФ.Шаг 1. Выбираем слагаемое 1 (табл. 36):
Таблица 36
№ | Простые импликанты | Конституенты единицы функции f | |||||||||||||
x1 | x2 | x3 | x4 | 0000 | 0001 | 0010 | 0011 | 0101 | 1000 | 1010 | 1100 | 1101 | 1110 | 1111 | |
1 | 1 | 1 | - | - | + | + | + | + | |||||||
2 | 0 | 0 | - | - | + | + | + | + | |||||||
3 | - | 0 | - | 0 | + | + | + | + | |||||||
4 | 1 | - | - | 0 | + | + | + | + | |||||||
5 | 0 | - | 0 | 1 | + | + | |||||||||
6 | - | 1 | 0 | 1 | + | + |
Шаг 2. Выбираем слагаемое 2 (табл. 37):
Таблица 37
№ | Простые импликанты | Конституенты единицы функции f | |||||||||||||
x1 | x2 | x3 | x4 | 0000 | 0001 | 0010 | 0011 | 0101 | 1000 | 1010 | 1100 | 1101 | 1110 | 1111 | |
1 | 1 | 1 | - | - | + | + | + | + | |||||||
2 | 0 | 0 | - | - | + | + | + | + | |||||||
3 | - | 0 | - | 0 | + | + | + | + | |||||||
4 | 1 | - | - | 0 | + | + | + | + | |||||||
5 | 0 | - | 0 | 1 | + | + | |||||||||
6 | - | 1 | 0 | 1 | + | + |
Шаг 3. Выбираем слагаемое 4 (табл.
38):Таблица 38
№ | Простые импликанты | Конституенты единицы функции f | |||||||||||||
x1 | x2 | x3 | x4 | 0000 | 0001 | 0010 | 0011 | 0101 | 1000 | 1010 | 1100 | 1101 | 1110 | 1111 | |
1 | 1 | 1 | - | - | + | + | + | + | |||||||
2 | 0 | 0 | - | - | + | + | + | + | |||||||
3 | - | 0 | - | 0 | + | + | + | + | |||||||
4 | 1 | - | - | 0 | + | + | + | + | |||||||
5 | 0 | - | 0 | 1 | + | + | |||||||||
6 | - | 1 | 0 | 1 | + | + |
Шаг 4. Выбираем слагаемое 5 (табл. 39):
Таблица 39
№ | Простые импликанты | Конституенты единицы функции f | |||||||||||||
x1 | x2 | x3 | x4 | 0000 | 0001 | 0010 | 0011 | 0101 | 1000 | 1010 | 1100 | 1101 | 1110 | 1111 | |
1 | 1 | 1 | - | - | + | + | + | + | |||||||
2 | 0 | 0 | - | - | + | + | + | + | |||||||
3 | - | 0 | - | 0 | + | + | + | + | |||||||
4 | 1 | - | - | 0 | + | + | + | + | |||||||
5 | 0 | - | 0 | 1 | + | + | |||||||||
6 | - | 1 | 0 | 1 | + | + |
Поскольку все конституенты единицы покрыты, то одна из ТДНФ имеет вид
Поскольку выбор включаемых слагаемых произволен, то функция может иметь несколько ТДНФ.
Для рассматриваемой функции существует еще несколько ТДНФ:
Все найденные ТДНФ являются минимальными ДНФ.
Пример 39.
Построить одну из МДНФ функции f=11100101.
Решение.
Сокращенная ДНФ для данной функции имеет вид
Строим матрицу покрытий (табл. 40):
Таблица 40
№ | Простые импликанты | Конституенты единицы функции f | ||||||
x1 | x2 | x3 | 000 | 001 | 010 | 101 | 111 | |
1 | 0 | 0 | - | + | + | |||
2 | 0 | - | 0 | + | + | |||
3 | 1 | - | 1 | + | + | |||
4 | - | 0 | 1 | + | + |
Шаг 1. Выбираем слагаемое 3 (табл. 41):
Таблица 41
№ | Простые импликанты | Конституенты единицы функции f | ||||||
x1 | x2 | x3 | 000 | 001 | 010 | 101 | 111 | |
1 | 0 | 0 | - | + | + | |||
2 | 0 | - | 0 | + | + | |||
3 | 1 | - | 1 | + | + | |||
4 | - | 0 | 1 | + | + |
Шаг 2.
Выбираем слагаемое 2 (табл. 42):Таблица 42
№ | Простые импликанты | Конституенты единицы функции f | ||||||
x1 | x2 | x3 | 000 | 001 | 010 | 101 | 111 | |
1 | 0 | 0 | - | + | + | |||
2 | 0 | - | 0 | + | + | |||
3 | 1 | - | 1 | + | + | |||
4 | - | 0 | 1 | + | + |
Шаг 3. Выбираем слагаемое 1(табл. 43):
Таблица 43
№ | Простые импликанты | Конституенты единицы функции f | ||||||
x1 | x2 | x3 | 000 | 001 | 010 | 101 | 111 | |
1 | 0 | 0 | - | + | + | |||
2 | 0 | - | 0 | + | + | |||
3 | 1 | - | 1 | + | + | |||
4 | - | 0 | 1 | + | + |
В результате получаем МДНФ: