Разложение булевой функции по переменным

Обозначим через Разложение булевой функции по переменным - student2.ru . Тогда

xs= Разложение булевой функции по переменным - student2.ru

В частности, Разложение булевой функции по переменным - student2.ru тогда и только тогда, когда Разложение булевой функции по переменным - student2.ru .

С помощью “степенной функции” Разложение булевой функции по переменным - student2.ru всякую булеву функцию Разложение булевой функции по переменным - student2.ru можно представить в виде:

Разложение булевой функции по переменным - student2.ru

называемом разложением булевой функции Разложение булевой функции по переменным - student2.ru по переменной Разложение булевой функции по переменным - student2.ru .

В самом деле, если Разложение булевой функции по переменным - student2.ru , то Разложение булевой функции по переменным - student2.ru , Разложение булевой функции по переменным - student2.ru и

Разложение булевой функции по переменным - student2.ru

Если Разложение булевой функции по переменным - student2.ru , то Разложение булевой функции по переменным - student2.ru , Разложение булевой функции по переменным - student2.ru и

Разложение булевой функции по переменным - student2.ru

Разложение булевой функции по переменным - student2.ru

Пример 4.

Разложим функцию Разложение булевой функции по переменным - student2.ru по переменной Разложение булевой функции по переменным - student2.ru . Для этого сначала построим таблицу функции Разложение булевой функции по переменным - student2.ru :

Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru
                 

Из таблицы видно, что Разложение булевой функции по переменным - student2.ru и Разложение булевой функции по переменным - student2.ru .

Используя формулу разложения по переменной Разложение булевой функции по переменным - student2.ru , находим

Разложение булевой функции по переменным - student2.ru

Итак, Разложение булевой функции по переменным - student2.ru

Пример 5.

Разложим функцию Разложение булевой функции по переменным - student2.ru из примера 4 по всем переменным. Так как функция принимает значение 1 на трех наборах: Разложение булевой функции по переменным - student2.ru , то согласно следствию из теоремы о разложении, имеем

Разложение булевой функции по переменным - student2.ru

Итак, Разложение булевой функции по переменным - student2.ru

Определение 3.

Разложение булевой функции Разложение булевой функции по переменным - student2.ru по всем переменным в виде

Разложение булевой функции по переменным - student2.ru

называется совершенной дизъюнктивной нормальной формой (СДНФ).

Пример 6.

Разложение булевой функции по переменным - student2.ru - СДНФ для функции Разложение булевой функции по переменным - student2.ru (см. пример 5).

Теорема 2.

Всякая булева функция (кроме 0) имеет единственную СДНФ.

Доказательство. Согласно следствию из теоремы о разложении

Разложение булевой функции по переменным - student2.ru

Замечание. Если под дизъюнкцией одного слагаемого понимать само это слагаемое, то дизъюнкции нуля слагаемых не существует, поэтому не существует СДНФ для функции 0.

При построении СДНФ имеет место следующее

Правило единицы. Рассматриваются только те наборы аргументов, на которых функция Разложение булевой функции по переменным - student2.ru принимает значение 1; для каждого такого набора в СДНФ делается заготовка слагаемого Разложение булевой функции по переменным - student2.ru . Если в данном наборе аргументов Разложение булевой функции по переменным - student2.ru , то над переменной Разложение булевой функции по переменным - student2.ru в заготовленном слагаемом навешивается отрицание: Разложение булевой функции по переменным - student2.ru .

Теорема 3.

Всякая булева функция может быть выражена через дизъюнкцию, конъюнкцию и отрицание:

Разложение булевой функции по переменным - student2.ru .

Доказательство.

Если Разложение булевой функции по переменным - student2.ru , то Разложение булевой функции по переменным - student2.ru . Если Разложение булевой функции по переменным - student2.ru , то

Разложение булевой функции по переменным - student2.ru .

Теорема 4.

Всякая булева функция (кроме 1) может быть единственным образом выражена в виде совершенной конъюнктивной нормальной форме (СКНФ):

Разложение булевой функции по переменным - student2.ru .

Доказательство.

Если Разложение булевой функции по переменным - student2.ru , то Разложение булевой функции по переменным - student2.ru и

Разложение булевой функции по переменным - student2.ru .

Применив к последнему тождеству принцип двойственности, находим

Разложение булевой функции по переменным - student2.ru

При построении СКНФ имеет место следующее

Правило нуля. Рассматриваются только те наборы аргументов, на которых функция Разложение булевой функции по переменным - student2.ru принимает значение 0; для каждого такого набора в СКНФ делается заготовка сомножителя Разложение булевой функции по переменным - student2.ru . Если в данном наборе аргументов Разложение булевой функции по переменным - student2.ru , то над переменной Разложение булевой функции по переменным - student2.ru в заготовленном сомножителе навешивается отрицание: Разложение булевой функции по переменным - student2.ru .

Пример 7.

Построим функцию для импликации: Разложение булевой функции по переменным - student2.ru . Импликация принимает значение 0 на одном наборе:

Разложение булевой функции по переменным - student2.ru .

Так как в этом наборе Разложение булевой функции по переменным - student2.ru и Разложение булевой функции по переменным - student2.ru , то по правилу нуля получаем

Разложение булевой функции по переменным - student2.ru .

Итак, Разложение булевой функции по переменным - student2.ru - искомая функция для импликации.

Полнота системы

Определение 4. Система функций {f1, f2, ..., fs, ...}ÌP2 называется полной в Р2, если любая функция f(x1, ..., xn) Î P2 может быть записана в виде формулы через функции этой системы.

Полные системы

1. P2 – полная система.

2. Система M={x1&x2, x1Úx2, Разложение булевой функции по переменным - student2.ru } – полная система, т.к. любая функция алгебры логики может быть записана в виде формулы через эти функции.

Пример 8. Неполные системы: { Разложение булевой функции по переменным - student2.ru }, {0,1}.

Лемма (достаточное условие полноты)

Пусть система Разложение булевой функции по переменным - student2.ru U = {f1, f2, ..., fs, ...} полна в Р2. Пусть B = {g1, g2, ..., gk, ...} – некоторая система из Р2, причем любая функция fi Î U может быть выражена формулой над B, тогда система B полна в Р2.

7. Система {x1&x2, x1Åx2, 0, 1} полна в Р2, U = {x1&x2, Разложение булевой функции по переменным - student2.ru }, Разложение булевой функции по переменным - student2.ru = x1Å1.

Полином Жегалкина

f(x1, ..., xn) Î P2, представим ее в виде формулы через конъюнкцию и сумму по модулю два, используя числа 0 и 1. Это можно сделать, так как {x1&x2, x1Åx2, 0, 1} полна в Р2. В силу свойства x & (yÅz) = xy Å xz можно раскрыть все скобки, привести подобные члены, и получится полином от n переменных, состоящий из членов вида х Разложение булевой функции по переменным - student2.ru х Разложение булевой функции по переменным - student2.ru ...х Разложение булевой функции по переменным - student2.ru , соединенных знаком Å. Такой полином называется полиномом Жегалкина.

Общий вид полинома Жегалкина:

Разложение булевой функции по переменным - student2.ru

где Разложение булевой функции по переменным - student2.ru , s = 0, 1, ..., n, причем при s = 0 получаем свободный член а0.

Представление функции в виде полинома Жегалкина

1. Представим любую функцию формулой над {x1&x2, Разложение булевой функции по переменным - student2.ru } и сделаем замену Разложение булевой функции по переменным - student2.ru =xÅ1. Этот способ удобен, если функция задана формулой.

Пример 9. (x1 Разложение булевой функции по переменным - student2.ru (x2 Разложение булевой функции по переменным - student2.ru x3))(x1 Ú x2) x3 = (x1Ú x2 Ú x3)(x1 Ú x2) x3 = (`x1x2 Ú x1x3 Ú x1x2 Ú x2 Ú x2x3)x3 = (`x1x3 Ú x2)x3 = x1x3 x2 x3 = ((x1x3Å1)x2Å1)x3 = x1x2x3Åx2x3Åx3.

Надо помнить, что четное число одинаковых слагаемых в сумме по mod2 дает 0.

2. Метод неопределенных коэффициентов. Он удобен, если функция задана таблицей.

Пример 10.

Запишем с неопределенными коэффициентами полином Жегалкина для функции трех переменных f(x1, x2, x3) = (01101001) = а0 Å а1х1Å а2х2Å а3х3Å b1x1x2Å b2x2x3Åb3x1x3Åcx1x2x3. Затем находим коэффициенты, используя значения функции на всех наборах. На наборе (0, 0, 0) f(0, 0, 0) = 0, с другой стороны, подставив этот набор в полином, получим f(0, 0, 0) = а0, отсюда а0 = 0. f(0, 0, 1) = 1, подставив набор (0, 0, 1) в полином, получим: f(0, 0, 1) = а0 Å а3, т.к. а0 = 0, отсюда а3 = 1. Аналогично, f(0, 1, 0) = 1 = а2, f(0, 1, 1) = 0 = а2 Å а3 Å b2 b2 = 0; а1 = 1; 0 = а1 Å а3 Å b3 , b3 = 0; 0 = а1 Å а2 Å b1 , b1 = 0; 1 = 1 Å 1 Å 1 Å c; c = 0; тогда полином Жегалкина для данной функции примет вид: f(x1, x2, x3) = x1 Å x2 Å x3.

Многочлен Жегалкина можно получить также с помощью треугольника Паскаля по единицам его левой стороны по таблице следующим образом. Построим многочлен Жегалкина для функции f = (10011110). Верхняя сторона треугольника есть функция f. Любой другой элемент треугольника есть сумма по модулю для двух соседних элементов предыдущей строки. Левая сторона треугольника для функции f содержит шесть единиц. Многочлен Жегалкина будет содержать шесть слагаемых. Первая единица треугольника соответствует набору (000). Первое слагаемое многочлена есть 1. Третья снизу единица в левой стороне треугольника соответствует набору (101). В качестве слагаемого многочлена берем x1x3. Аналогично для других единиц треугольника. Слева от наборов показаны слагаемые многочлена Жегалкина.

N x1x2x3 f Треугольник Паскаля
x3 x2 x2x3 x1 x1x3 x1x2 x1x2x3 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0

Тогда Разложение булевой функции по переменным - student2.ru

Теорема Жегалкина

Каждая функция из Разложение булевой функции по переменным - student2.ru может быть представлена в виде полинома Жегалкина единственным образом.

Здесь единственность понимается с точностью до порядка слагаемых в сумме и порядка сомножителей в конъюнкциях:

Разложение булевой функции по переменным - student2.ru Разложение булевой функции по переменным - student2.ru , s = 0, 1, ..., n.

Доказательство.

Любая функция из Р2 может быть представлена формулой над {x1 & x2, x1Å x2, 0, 1}, а эта формула после раскрытия всех скобок и приведения подобных членов дает полином Жегалкина. Докажем единственность представления. Рассмотрим функции f(x1, ..., xn) от n переменных. Мы знаем, что всего таких функций, т.е. их таблиц истинности , 2n. Подсчитаем число различных полиномов Жегалкина от n переменных, т.е. число вариаций вида: Разложение булевой функции по переменным - student2.ru . Число наборов Разложение булевой функции по переменным - student2.ru равно числу всех подмножеств множества { x1, ..., xn }, сюда входит и пустое множество (если s = 0). Число подмножеств множества из n элементов равно 2n , а так как каждый набор входит с коэффициентом Разложение булевой функции по переменным - student2.ru , принимающим два значения: 0 или 1, то число всевозможных полиномов будет Разложение булевой функции по переменным - student2.ru . Так как каждому полиному соответствует единственная функция, число функций от n переменных равно числу полиномов, то каждой функции будет соответствовать единственный полином.

Определение.

Функция f(x1, ..., xn), полином Жегалкина для которой имеет следующий линейный относительно переменных вид: f = а0 Å а1х1 Å а2х2 Å ... Å аnхn, называется линейной.

Лемма о нелинейной функции.

Суперпозицией нелинейной функции, отрицания и константы 1 можно получить конъюнкцию.

Доказательство.

Пусть f(x1, ..., xn) – нелинейная функция. Тогда полином Жегалкина содержит для нее слагаемое, в котором присутствует произведение xixj. Будем считать для простоты, что x1x2 в многочлене Жегалкина является этим произведением. Произведя группировку слагаемых, функцию f представим в виде Разложение булевой функции по переменным - student2.ru

Функция h0 не есть тождественный нуль, иначе в полиноме Жегалкина отсутствует слагаемое с произведением x1x2. Тогда существует набор (a3, …, an) из 0 и 1, для которого h0(a3, …, an) = 1. Пусть h1(a3, …, an) = a, h2(a3, …, an) = b, h3(a3, …, an) = c. Тогда Разложение булевой функции по переменным - student2.ru

Построим функцию:

Разложение булевой функции по переменным - student2.ru где d = ab Å c. Если d = 0, то h(x1, x2) = x1x2. Если d = 1, то h(x1, x2) = x1x2 Å 1 и тогда Разложение булевой функции по переменным - student2.ru Лемма доказана.

Функция f(x1, ..., xn) сохраняет константу a Î {0, 1}, если f(a, …, a) = a.

Пример 11.

Функция xy сохраняет 0, сохраняет 1. Функция x®y сохраняет 1 и не сохраняет 0.

Минимизация булевых функций

Минимизация нормальных форм

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

Если для всякого набора Разложение булевой функции по переменным - student2.ru = (a1, ..., an) значений переменных условие g( Разложение булевой функции по переменным - student2.ru )=1 влечёт Разложение булевой функции по переменным - student2.ru , то функция g называется частью функции f (или функция f накрывает функцию g). Если при этом для некоторого набора Разложение булевой функции по переменным - student2.ru = (c1, ..., cn) функция g( Разложение булевой функции по переменным - student2.ru )=1, то говорят, что функция g накрывает единицу функции f на наборе Разложение булевой функции по переменным - student2.ru (или что g накрывает конституенту единицы Разложение булевой функции по переменным - student2.ru функции f). Заметим, что конституанта единицы функции f есть часть функции f, накрывающая единственную единицу функции f.

Элементарная конъюнкция K называется импликантом функции f, если для всякого набора Разложение булевой функции по переменным - student2.ru =(a1, ..., an) из 0 и 1 условие K( Разложение булевой функции по переменным - student2.ru )=1 влечет f( Разложение булевой функции по переменным - student2.ru )=1.

Импликант K функции f называется простым, если выражение, получающееся из него выбрасыванием любых множителей, уже не импликант функции f.

Ясно, что всякий импликант функции f есть часть функции f.

Теорема 5.

Всякая функция реализуется дизъюнкцией всех своих простых имликант (ПИ).

Доказательство.

Пусть f(x1, ..., xn) есть функция, а A = K1 v ... v Km – дизъюнкция всех ее простых импликант. Пусть Разложение булевой функции по переменным - student2.ru = (a1, ..., an) – произвольный набор длины n из 0 и 1.

Если A( Разложение булевой функции по переменным - student2.ru ) = 1, то найдется дизъюнктивное слагаемое Ki ( Разложение булевой функции по переменным - student2.ru ) = 1, что влечет f( Разложение булевой функции по переменным - student2.ru ) = 1, ибо Ki есть импликант функции f.

Если f( Разложение булевой функции по переменным - student2.ru ) = 1, то в СДНФ для функции f найдется элементарная конъюнкция K, равная на этом наборе единице. Один из простых имликантов Kj функции f получается выбрасыванием некоторых множителей из K и потому Kj( Разложение булевой функции по переменным - student2.ru ) = 1, а тогда A( Разложение булевой функции по переменным - student2.ru ) = 1.

Следовательно, f = A. Теорема доказана.

Сокращенная ДНФ функции f есть дизъюнкция всех простых импликант функции f. Всякая функция f реализуется своей сокращенной ДНФ. Для всякой функции, не равной тождественно нулю, существует единственная сокращенная ДНФ.

Пусть A и B – произвольные формулы. Из свойств булевых операций вытекают следующие обратимые правила преобразования ДНФ:

1) Разложение булевой функции по переменным - student2.ru – полное склеивание (развертывание);

2) Разложение булевой функции по переменным - student2.ru – неполное склеивание;

3) Разложение булевой функции по переменным - student2.ru – обобщенное склеивание;

4) Разложение булевой функции по переменным - student2.ru – поглощение;

5) Разложение булевой функции по переменным - student2.ru – идемпотентность ( удаление дублирующих членов).

Теорема Квайна. Если в СДНФ функции f провести все операции неполного склеивания, а затем все операции поглощения и удаления дублирующих членов, то в результате получится сокращения ДНФ функции f.

Доказательство.

Пусть имеем сокращенную ДНФ функции f. Проведем все операции развертывания к каждому простому импликанту для получения недостающих переменных в каждом дизъюнктивном слагаемом сокращенной ДНФ. В полученном выражении из нескольких одинаковых дизъюнктивных слагаемых оставим только по одному экземпляру. В результате получим СДНФ функции f. Теперь, исходя из полученной СДНФ, в обратном порядке проведем операции добавления одинаковых дизъюнктивных слагаемых (с помощью правил идемпотентности), неполного склеивания и поглощения. В итоге получим исходную сокращенную ДНФ.

Наши рекомендации