11.2.2. Покрытия таблицы Квайна и ДНФ

Определение. Будем говорить, что строка таблицы Квайна покрывает столбец, если она содержит единицу в этом столбце.

Пример. Строка H покрывает второй, третий, шестой и восьмой столбцы таблицы Q. •

Определение. Покрытием таблицы Квайна назовем подмножество таких ее строк, которые в совокупности покрывают все столбцы таблицы.

Примеры. Покрытиями таблицы Q являются: все восемь ее строк; семь строк: A,B,C,D,F,G,H, первые шесть строк; первые пять строк; однако не удается найти ни одного четырехстрочного покрытия. •

Любое покрытие таблицы Квайна функции f(x1, …, xn) задает ее достаточное подмножество максимальных интервалов. Другими словами, любое покрытие таблицы Квайна задает ДНФf. В частности, покрытие, состоящее из всех строк таблицы, задает сокращенную ДНФ.

Определение. Длиной покрытия назовем количество строк, образующих покрытие.

Примеры. Длины покрытий из предыдущего примера равны соответственно 8, 7, 6 и 5. •

Определение. Покрытие таблицы Квайна называется безызбыточным, если при удалении из него хотя бы одной строки оно перестает быть покрытием.

Примеры. Множество из первых шести строк таблицы Квайна Q не является безызбыточным покрытием, поскольку при удалении шестой строки оно остается покрытием. Первые пять строк образуют безызбыточное покрытие, и оно не единственное – шесть строк A,B,C,D,F,G тоже образуют безызбыточное покрытие. •

В общем случае таблица Квайна функции f(x1, …, xn) имеет несколько безызбыточных покрытий, и любое безызбыточное покрытие задает безызбыточную ДНФf, так как из нее нельзя выбросить ни одной конъюнкции (из безызбыточного покрытия нельзя выбросить ни одной строки) и ни одной буквы из какой-либо конъюнкции (строкам приписаны простые импликанты) так, чтобы полученная ДНФ оставалась равносильной исходной ДНФ.

Определение. Кратчайшим покрытием таблицы Квайна назовем покрытие минимальной длины.

Примеры. Первые пять строк таблицы Квайна Q, а также пять строк A,B,F,G,H образуют ее кратчайшие покрытия. •

Очевидно, что каждое кратчайшее покрытие таблицы Квайна функции f(x1, …, xn) задает кратчайшую ДНФf.

Определение. Рангом строки таблицы Квайна назовем ранг приписанной ей простой импликанты.

Пример. Ранг строки H (конъюнкции c d) таблицы Квайна Q равен двум, ранги остальных строк равны трем. •

Определение. Минимальным покрытием таблицы Квайна назовем покрытие с минимальной суммой рангов строк.

Пример. Строки A,B,F,G,H таблицы Квайна Q образуют минимальное покрытие, так как сумма их рангов равна 14, а все остальные покрытия имеют больший суммарный ранг строк. •

Нетрудно видеть, что минимальное покрытие таблицы Квайна функции f(x1, …, xn) задает минимальную ДНФf.

Таким образом, задача минимизации булевой функции решается построением таблицы Квайна и поиском ее кратчайших или минимальных покрытий (в зависимости от постановки задачи).

Отвлечемся на время от задачи минимизации и покажем, что совсем иные задачи сводятся к поиску тех или иных покрытий булевых матриц.

Задача 1. Пусть в некотором устройстве возможны 10 неисправностей, и пусть имеется 8 тестов, каждый из которых обнаруживает свое подмножество неисправностей:

Тесты: A B C D E F G H
Неисправности:1, 2 3, 4 5, 6 8, 9 7, 10 5, 7 9, 10 2, 3, 6, 8

Требуется подобрать кратчайший полный тест, то есть набор из минимального числа тестов, обнаруживающих все неисправности.

Построим матрицу, строкам которой припишем тесты, а столбцам – неисправности. Элемент матрицы, стоящий на пересечении i-й строки и j-го столбца, положим равным единице тогда и только тогда, когда i-й тест обнаруживает j-ю неисправность.

Матрица полностью совпадает с таблицей Q, а ее кратчайшее покрытие является решением задачи о кратчайшем полном тесте.

Пусть теперь проверка каждого теста требует определенных временных затрат, например, тест H требует двух единиц времени, а остальные – трех. Тогда имеет смысл искать минимальный полный тест, то есть набор тестов, который обнаруживает все неисправности за минимальное время. Решение задачи сводится к поиску минимального покрытия той же матрицы, если рангом строки считать временные затраты на проверку теста.

Задача 2. Имеется группа переводчиков с иностранных языков на русский. О каждом переводчике известно, какими иностранными языками он владеет. Требуется выбрать минимальное число переводчиков, знающих в совокупности все языки. И снова мы приходим к мысли о построении булевой матрицы и поиске ее кратчайшего покрытия.

Учитывая это, будем абстрагироваться от задач, породивших матрицы, и говорить лишь об их строках, столбцах и элементах.