Задача сводится к выбору для каждой функции такого покрытия, которое включало бы возможно большее число s
-кубов, содержащихся в покрытиях других функций. Этому требованию удовлетворяют, например, покрытия для трех функций, которому соответствует трехвыходная схема. Если бы для функции y3 было выбрано другое покрытие, то схема получилась бы менее экономичной.В этом параграфе описаны различные методы представления булевых функций применительно к задаче минимизации. При небольшом числе переменных эта задача обозрима, и ее можно решить простым перебором различных вариантов. Для функции многих переменных разработаны формальные методы минимизации, которые рассматриваются в следующем параграфе.
5. Минимизация булевых функций
1. Постановка задачи.
Минимизация схемы в булевом базисе сводится к поиску минимальной дизъюнктивной формы, которой соответствует минимальное покрытие. Общее число букв, входящих в нормальную форму, выражается ценой покрытия , где qs - число s-кубов, образующих покрытие даннойфункции от n переменных. Используются и другие определения цены покрытия, например с’ = с + q, где q - общее число всех кубов покрытия. Во всех случаях минимальное покрытие характеризуется наименьшим значением его цены.Обычно задача минимизации решается в два шага. Сначала ищут сокращенное покрытие, которое включает все s
-кубы максимальной размерности, но не содержит ни одного куба, покрывающегося каким-либо кубом этого покрытия. Соответствующую дизъюнктивную нормальную форму называют сокращенной, а ее минитермы - простыми импликантами. Для данной функции сокращенное покрытие является единственным, но оно может быть избыточным вследствие того, что некоторые из кубов покрываются совокупностями других кубов.На втором шаге осуществляется переходот сокращенной к тупиковым дизъюнктивным' нормальным формам, из которых выбираются минимальные формы. Тупиковые формы образуются путем исключения из сокращенного покрытия всех избыточных кубов, без которых оставшаяся совокупность кубов еще образует покрытие данной функции, но при дальнейшем исключении любого из кубов она уже не покрывает множества всех вершин, соответствующих единичным значениям функции, т. е. перестает быть покрытием.
Куб сокращенного покрытия, который покрывает вершины данной функции, не покрываемые никакими другими кубами, не может оказаться избыточным и всегда войдет в минимальное покрытие. Такой куб, как и соответствующая ему импликанта, называют экстремалью (существенной импликантой),
а покрываемые им вершины—отмеченными вершинами. Множество экстремалей
- 550 -
образует ядро покрытия.
Ясно, что при переходе от сокращенного покрытия к минимальному прежде всего следует выделить все экстремали. Если множество экстремалей не образует покрытия, то оно дополняется до покрытия кубами из сокращенного покрытия.Сокращенное покрытие Z, и минимальные покрытия С’min
и C”min выражаются следующим образом: ; ; .
Сокращенная форма представляет собой дизъюнкцию четырех простых импликант, т. е. y = x1
x̅2 ∨ x1x3 ∨ x2x3 ∨ x̅1x2. Экстремалями являются простые импликанты x1x̅2 и x̅1x2, которым соответствуют 1-кубы (10x) и (01x), а отмеченные вершины - x1x̅2x̅3 и x̅1x2x̅3 или соответственно (100) и (010).2. Метод Квайна - Мак-Класки.
Этот метод используется в случаях, когда функция задана в дизъюнктивной совершенной нормальной форме (или таблицей соответствия). Приведение к сокращенной форме осуществляется последовательным применением операции склеивания axi ∨ ax̅i = a, где a - конъюнкции переменных, отличных от xi. Множеству конституент единицы, представленных в исходной форме, соответствует совокупность 0-кубов K0, а операции склеивания - объединение двух 0-кубов, которые отличаются только одной координатой. Результатом такого объединения является 1-куб, в котором различные координаты исходных 0-кубов замещены символом х. Сравнивая попарно все 0-кубы, получаем множество 1-кубов K1. Применяя к K1 операцию склеивания, находим множество 2-кубов K2 и т. д. Этот процесс продолжается до тех пор, пока получаемое из Ks очередное Ks+1 не окажется пустым множеством. В результате множество K0 преобразуется в комплекс кубов К = { K0, K1, K2, …, Ks], причем s ≤ n.Для выделения из К
множества простых импликант Z ⊂ K при каждой операции склеивания необходимо отмечать каким-либо знаком (например, меткой v ) те кубы, которые объединяются в кубы высшей размерности. Очевидно, неотмеченные кубы и образуют множество простых импликант Z. Чтобы уменьшить число сравниваемых пар при операции объединения целесообразно разбить множество Ks на классы, в каждом из которых содержатся s-кубы с одинаковым числом единиц (или нулей), и упорядочить эти классы по возрастающему числу единиц. Так как объединяться могут только такие два s-куба, число единиц в которых точно на
- 551 -