- •Г.С. Розаренов, в.А. Шаруда дискретная математика Учебное пособие
- •Воронеж 2008
- •Воронеж 2008
- •Введение
- •1. Множества
- •1.1. Основные понятия
- •Упражнения
- •1.2. Операции над множествами
- •Упражнения
- •1.3. Диаграммы Венна
- •Упражнения
- •1.4. Доказательства
- •Упражнения
- •1.5. Векторы, прямые произведения, проекции векторов
- •Упражнения.
- •2. Алгебра логики
- •2.1. Функции алгебры логики
- •2.2. Формулы. Реализация функций формулами
- •2.3. Эквивалентность формул. Свойства элементарных функций. Принцип двойственности
- •2.4. Разложение булевых функций по переменным. Совершенная дизъюнктивная нормальная форма
- •2.5. Полнота и замкнутость
- •2.6. Проблема минимизации булевых функций
- •Упражнения.
- •2.7. Упрощение д.Н.Ф. Тупиковые (относительно упрощения) д.Н.Ф.
- •Упражнения.
- •3. Язык логики предикатов
- •3.1. Основные понятия логики предикатов
- •3.2. Истинные формулы и эквивалентные соотношения
- •Упражнения.
- •4. Теория графов
- •4.1.Основные понятия
- •Г раф изоморфен
- •4.2. Способы задания графов
- •Матрица инцидентности (ij)
- •4.3. Операции над частями графа
- •4.4. Маршруты, пути, цепи, циклы
- •4.5. Дерево и лес
- •4.6. Сети
- •Упражнения.
- •5. Введение в теорию алгоритмов
- •5.1. Предварительные обсуждения
- •5.2. Блок-схемы алгоритмов
- •5.3. Машины Тьюринга
- •5.4. Некоторые операции над машинами Тьюринга
- •5.5. Рекурсивные функции
- •6. Автоматы
- •6.1. Определение основных понятий
- •6.2. Изоморфизм и эквивалентность автоматов
- •6.3. Сети из автоматов
- •6.4. Синхронные сети
- •6.5. Программная реализация логических функций
- •Заключение
- •394026 Воронеж, Московский просп., 14
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,
то .
Доказанная теорема носит конструктивный характер. Она позволяет для каждой функции построить формулу, ее реализующую (в виде совершенной д.н.ф.). Для этого:
В таблице истинности для функции f(x1, …, xn) отмечаем все строки (σ1, …, σn), в которых f(σ1, …, σn)=1.
Для каждой такой строки образуем логическое произведение .
Все полученные конъюнкции соединяем знаком дизъюнкции.
Пример 10.
1) Найти совершенную д.н.ф. для функции x1→x2.
Имеем три набора (0, 0), (0, 1), (1, 1), на которых эта функция равна 1. Поэтому
x1→x2=x1°Λx2°V x1°Λx21 V x11Λx21= Λ V Λx2V x1Λx2.
Найти совершенную д.н.ф. для функции, заданной нижеследующей таблицей 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.
Построить совершенную к.н.ф. для функции x1→x2.
f(x1,x2)=0 только для набора (1, 0)
x1→x2= 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 x2V…Vx20 .
Эта формула в правой части содержит 39 символов, ее же таблица содержит 220 строк, т.е. больше миллиона.