Функция покрытия
Пусть множество \(N=\{\alpha_{1},\ldots,\alpha_s\}\) покрывается системой подмножеств \(N_{1},\ldots,N_p\). Этой системе сопоставляют матрицу \(M\in B^{p,s}\): элемент M[i,j] равен 1 тогда и только тогда, когда \(\alpha_j\in N_i\). Набор строк I покрывает M, если в каждом столбце имеется единица хотя бы в одной строке из I. Покрытие называют тупиковым, если никакое его собственное подмножество уже не является покрытием.1
Каждой строке i сопоставим переменную \(y_i\). Функция покрытия \(F(y_{1},\ldots,y_p)\) принимает значение 1 тогда и только тогда, когда строки с \(y_i=1\) покрывают все столбцы. Для неё справедливо представление
\(F(y)=\bigwedge_{j=1}^s (\bigvee_{i: M[i,j]=1} y_i)\). 1
Каждая скобка требует выбрать хотя бы одну строку, закрывающую соответствующий столбец. После раскрытия скобок, приведения подобных и поглощений получается сокращённая ДНФ функции F. Её простые импликанты однозначно задают все тупиковые покрытия матрицы.1
Таблица Квайна
Для функции f берут \(N=N_f\), а в качестве покрывающих множеств — все максимальные грани \(N_f\), то есть множества единиц всех простых импликант \(K_{1},\ldots,K_p\). Матрица инцидентности этого покрытия называется таблицей Квайна. Строка i показывает, какие единичные наборы покрывает \(K_i\).1
Если строки \(i_{1},\ldots,i_r\) образуют тупиковое покрытие таблицы Квайна, то \(K_{i_{1}}\vee \ldots \vee K_{i_r}\) является тупиковой ДНФ функции f. Обратно, любая тупиковая ДНФ состоит из простых импликант и задаёт тупиковое покрытие таблицы. Поэтому после построения сокращённой ДНФ задача перечисления и последующего сравнения тупиковых ДНФ становится чистой задачей о покрытиях.1