99
решение, элементы антиядра исключаются из рассмотрения и оставшимися
интервалами покрываются элементы множества М
1
, не покрытые ядром.
Если максимальный интервал не принадлежит ядру, то после его удаления
из всей совокупности максимальных интервалов оставшиеся интервалы будут
покрывать множество М
1
. Таким образом, задача поиска ядра сводится к
нахождению избыточных конъюнкций в ДНФ.
Можно предложить другой способ выполнения второго этапа, который не
требует разбиения интервалов на отдельные элементы множества М
1
.
Пусть U – троичная матрица, представляющая сокращенную ДНФ
некоторой булевой функции. Рассмотрим совокупность Р(U) непустых
подмножеств множества номеров строк матрицы U такую, что для каждого
элемента множества М
1
имеется подмножество в совокупности Р(U), состоящее
из номеров всех строк матрицы U, представляющих интервалы, содержащие
данный элемент, и других подмножеств в Р(U) нет. Например, если матрицей U
является приведенная выше матрица, то для вектора (1 0 0 1 1) таким
подмножеством является {1, 4}.
Введем обозначение: t(u, U) – множество номеров тех строк матрицы U,
которые представляют интервалы, содержащие булев вектор и. Например, для
приведенной выше матрицы и и = (1 0 0 1 1) имеем t(u, U) = {1, 4}. Ясно, что
t(u, U) является элементом множества Р(U).
Теперь задачу кратчайшего покрытия множества М
1
максимальными
интервалами можно сформулировать следующим образом: для заданной
матрицы U построить минимальную совокупность ее строк такую, что любой
элемент множества Р(U) содержит номер хотя бы одной строки из данной
совокупности.
Остановимся на способе получения множества Р(U). Пусть для двух
троичных матриц U
1
и U
2
с одинаковым числом строк получены множества
Р(U
1
) и Р(U
2
).
У т в е р ж д е н и е 14.2. Если из матриц U
1
и U
2
построить матрицу U,
приписав столбцы матрицы U
2
к столбцам U
1
, то множество Р(U) можно
получить, взяв за его элементы всевозможные непустые пересечения элементов
Р(U
1
) с элементами Р(U
2
).
Для того, чтобы это показать, преобразуем матрицы U
1
и U
2
следующим
образом. К матрице U
1
припишем справа столько столбцов, сколько их имеет
матрица U
2
. Всем элементам этих столбцов придадим значение «–». Такие же
столбцы, число которых равно числу столбцов исходной матрицы U
1
,
припишем слева к матрице U
2
. Очевидно, Р(U
1
) и Р(U
2
) при этом не изменятся.
Произвольно выберем вектор и, принадлежащий какому-нибудь интервалу,
представляемому строкой матрицы U. По построению матрицы U имеем
t(u, U) = t(u, U
1
) ∩ t(u, U
2
), т. е. каждый элемент множества Р(U) является
пересечением двух множеств, одно из которых является элементом множества
Р(U
1
), а другое – элементом множества Р(U
2
). С другой стороны, для каждой
пары пересекающихся элементов, один из которых взят из Р(U
1
), а другой – из