Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400186.doc
Скачиваний:
13
Добавлен:
30.04.2022
Размер:
2.63 Mб
Скачать

2.4. Разложение булевых функций по переменным. Совершенная дизъюнктивная нормальная форма

Возникает вопрос. Если в качестве В допустить некоторый запас элементарных функций, то всякая ли функция алгебры логики может быть выражена в виде формулы? Ближайшие рассмотрения направлены на решение этого вопроса.

Обозначим

xσ=xΛσV Λ ,

где σ – параметр, равный либо 0, либо 1.

Очевидно, что

Легко видеть, что xσ=1, тогда и только тогда, когда x=σ.

Теорема (о разложении функций по переменным)

Каждую функцию алгебры логики f(x1, …, xn) при каждом m=1…n можно представить в виде:

(2.1)

где дизъюнкция берется по всем возможным наборам значений переменных x1, …, xm (это представление называется разложением функции по переменным x1, …, xm).

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

Рассмотрим произвольный набор значений переменных (α1,…,αn) и подставим его в левую и правую части равенства (2.1).

Левая часть дает f(α1, …, αn).

Правая

Т.е. на каждом наборе (α1, …, αn) левая и правая части совпадают, что и требовалось доказать.

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

1) Разложения по переменной

f(x1, …, xn-1, xn)= xnΛ f(x1, …, xn-1, 1)V Λ f(x1, …, xn-1, 0).

Функции f(x1, …, xn-1, 1) и f(x1, …, xn-1, 0) называются компонентами разложения.

2) Разложение по всем n переменным

(2.2)

Это разложение (2.2) называется совершенной дизъюнктивной нормальной формой (совершенной д.н.ф.).

Имеет место

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

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

1) Если f(x1, …, xn) ≡ 0, то f(x1, …, xn) = x1Λ .

2) Если f(x1, …, xn) ≠ 0,

то .

Доказанная теорема носит конструктивный характер. Она позволяет для каждой функции построить формулу, ее реализующую (в виде совершенной д.н.ф.). Для этого:

  1. В таблице истинности для функции f(x1, …, xn) отмечаем все строки (σ1, …, σn), в которых f(σ1, …, σn)=1.

  2. Для каждой такой строки образуем логическое произведение .

  3. Все полученные конъюнкции соединяем знаком дизъюнкции.

Пример 10.

1) Найти совершенную д.н.ф. для функции x1x2.

Имеем три набора (0, 0), (0, 1), (1, 1), на которых эта функция равна 1. Поэтому

x1x2=x1°Λx2°V x1°Λx21 V x11Λx21= Λ V Λx2V x1Λx2.

  1. Найти совершенную д.н.ф. для функции, заданной нижеследующей таблицей 8.

Таблица 8

x1

x2

x3

f(x1, x2, x3)

0

0

0

1

0

0

1

1

0

1

0

0

0

1

1

0

1

0

0

0

1

0

1

1

1

1

0

0

1

1

1

1

f(x1, x2, x3) = Λ Λ V Λ Λx3V x1Λ Λx3 V x1Λx2Λ x3.

Совершенная дизъюнктивная нормальная форма имеет вид ΣП. Нельзя ли для булевых функций получить выражение типа ПΣ? Покажем, что при f≠1 это возможно.

Для этого разложим двойственную функцию f* к функции f (f*≠0) в совершенную д.н.ф..

Возьмем тождество для двойственных функций

Т.к. f**=f, то

Это выражение носит название совершенной конъюнктивной нормальной формы (совершенной к.н.ф.).

Пример 11.

  1. Построить совершенную к.н.ф. для функции x1x2.

f(x1,x2)=0 только для набора (1, 0)

x1x2= V =x1°Vx21 = V x2.

2) Построить совершенную к.н.ф. для f(x1, x2, x3) из предыдущего примера

f(x1, x2, x3) =(x1V Vx3)Λ(x1V V )Λ( Λx2Λ x3)Λ

Λ( V Vx3).

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

К примеру, рассмотрим функцию

f(x1, …, x20) =x1V x2VVx20 .

Эта формула в правой части содержит 39 символов, ее же таблица содержит 220 строк, т.е. больше миллиона.