Задача: Дана ДНФ. Необходимо найти ДНФ, получающуюся из исходной применением всех возможных операций обобщенного склеивания.
Насколько я понял, обобщенное склеивание выглядит так:
.
Из исходной ДНФ составим матрицу следующим образом: i-я строка будет соответствовать i-ой элементарной коньюнкции(ЭК); j-й столбец будет соответствовать j-ой переменной; на пересечении i-ой строки и j-го столбца стоит стоит -1, если j-ой переменной нет в i-ой ЭК, 0 если j-ая переменная входит в i-ую ЭК с отрицанием, 1 - если без отрицания. Элементы будем обозначать как в обычной матрице,
Проделаем следующие операции:
Возьмем элемент
(если он равен -1 то переходим к
). Будем искать i-ую строку, где элемент
неравен нашему элементу
и вся остальная строка тоже не совпадает с первой строкой. Тогда, при условии что нет такого k, что
или
, в конец матрицы мы добавляем новую строку по следующему правилу: на k-ом столбце стоит:
-1, если
и
;
0, если
и
или
и
или
и
;
1, если
и
или
и
или
и
;
а на j-ом столбце будет стоять -1.
Так мы переберем все элементы первой строки.
Потом перейдем ко второй строке, и переберем все элементы второй строки. И так далее пока не переберем все строки(включая и те, которые мы в процессе добавляли).
Если переделать получившуюся матрицу в привычную нам ДНФ, будет ли это решением задачи?