- •Введение
- •1. Элементы комбинаторики
- •1.1. Перестановки. Размещения. Сочетания
- •Теорема.
- •1.2. Задачи по комбинаторике
- •2. Функции алгебры логики
- •2.1. Элементарные функции алгебры логики
- •Пример 2.
- •2.2. Формульное задание функций алгебры логики
- •Упрощение записи формул:
- •Теорема о замене подформул на эквивалентные
- •Некоторые свойства элементарных функций
- •Следствия из свойств элементарных функций
- •Пример 3:
- •2.3 Принцип двойственности
- •Пример 1. Покажем с помощью таблицы истинности, что константа 0 двойственна к 1:
- •Пример 3. Покажем, что функция х1х2 двойственна к x1&x2, функция х1х2 двойственна к функции x1|x2.
- •Принцип двойственности
- •Лемма о несамодвойственной функции
- •2.4 Разложение булевой функции по переменным
- •Теорема о разложении функции по переменным
- •2.5. Полнота, примеры полных систем
- •Полные системы
- •Представление функции в виде полинома Жегалкина
- •Теорема Жегалкина
- •2.6. Замыкание и замкнутые классы
- •Важнейшие замкнутые классы в р2
- •Теорема Поста о полноте
- •Примеры использования теоремы Поста.
- •3. Составим критериальную таблицу для другой полной системы функций из р2: {0, 1, x1x2, x1x2}.
- •Теорема о достаточности четырех функций.
- •2.7. Функции k - значной логики
- •Теорема о полной в Рk системе функций
- •2.8. Задачи и упражнения по функциям алгебры логики
- •1. Построить таблицы соответствующих функций, выяснить, эквивалентны ли формулы и :
- •2. Построив таблицу для соответствующих функций, убедитесь в справедливости следующих эквивалентностей:
- •3. Минимизация булевых функций
- •3.1. Минимизация нормальных форм
- •Алгоритм Квайна построения сокращенной днф.
- •Метод Блейка
- •Алгоритм построения сокращенной днф с помощью кнф (метод Нельсона)
- •Построение всех тупиковых днф.
- •Алгоритм минимизации функций в классе днф
- •Алгоритм минимизации функций в классе кнф
- •Алгоритм минимизации функций в классе нормальных форм
- •3.2 Минимизация частично определенных функций
- •Метод минимизирующих карт Карно
- •3.3 Задачи по минимизации и доопределению булевых функций
- •4. Логика высказываний
- •4.1. Введение в логику высказываний
- •4.2. Задачи по алгебре высказываний
- •Список литературы
2.3 Принцип двойственности
Определение 1. Функции f*(x1,
..., xn) называется двойственной
к функции f(x1, ..., xn),
если f*(x1, ..., xn)
=
(
1,
...,
n).
Пример 1. Покажем с помощью таблицы истинности, что константа 0 двойственна к 1:
-
x
f
f*
0
1
0
0
1
1
Функции
f(x)
= x
и g(x)
=
двойственны сами себе:
-
x
f
f*
g
g*
0
1
0
1
0
1
1
0
1
0
так
как f*(0)=
(1).
Определение 2. Если f*(x1, ..., xn) = f(x1, ..., xn), то f(x1, ..., xn) называется самодвойственной.
Пример 2. Покажем, что f(x1,x2,x3)=x1x2x3 – самодвойственна:
-
x1
x2
x3
f
f*
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
0
1
Если f*– самодвойственна, то
(
1,
...,
n)
= f(x1, ..., xn),
т.е. на противоположных наборах функция
принимает противоположные значения.
Пример 3. Покажем, что функция х1х2 двойственна к x1&x2, функция х1х2 двойственна к функции x1|x2.
-
x1 x2
f=х1х2
f*
g=x1|x2
g*=x1
x20 0
0 1
1 0
1 1
0
1
1
1
0
0
0
1
1
1
1
0
1
0
0
0
Теорема о двойственных функциях
Если f* двойственна к f, то f двойственна к f*.
Доказательство. f*(x1,
..., xn) =
(
1,
...,
n).
Найдем двойственную функцию к f*,
т.е. (f*( x1, ..., xn))*
= (
(
1,
...,
n))*
=
(
1,
...,
n)
= f(x1, .., xn).
Предположим, что функция задана формулой. Можно ли найти по этой формуле двойственную функцию? Ответ на этот вопрос дает следующая теорема.
Принцип двойственности
Теорема: Пусть функция h(x1, ..., xn) реализована формулой h(x1, ..., xn) = =g(G1, ..., Gm) = g(f1(x1, ..., xn), ..., fm(x1, ..., xn)), где какие-то переменные могут быть фиктивными. Тогда h*( x1, ..., xn) = g*(f1*( x1, ..., xn), ..., fm*(x1, …, xn)), это означает, что если функция задана некоторой формулой, то чтобы получить двойственную функцию, надо в этой формуле все знаки функций заменить на двойственные, 0 на 1, 1 на 0.
Доказательство. h*(x1,
..., xn) =
(
1,
...,
n)
=
(f1(
1,
...,
n),
..., fm(
1,
...,
n))
=
..
n
.
.
n
g
..
g*(f1*(
x1, ..., xn), ..., fm*(
x1, ..., xn)), что и
требовалось доказать.
Если функция h(x1, ..., xn) реализуется формулой N[f1, ..., fn], то формулу, полученную из N заменой fi, входящих в нее, на fi* и реализующую функцию h*(x1, ..., xn), будем называть двойственной и обозначать N*(x1, ..., xn).
Пример 4.
Построить формулу, реализующую f*,
если f = ((x
y)
z) (y![]()
(xyz)).
Покажем, что она эквивалентна формуле
N = z(xy).
Найдем (xy)*
и (x
y)*.
-
x y
xy
(xy)*
x
y(x
y)*0 0
0 1
1 0
1 1
0
1
1
0
1
0
0
1
1
1
0
1
0
1
0
0
Из таблиц видно, что
(x
y)*
= x ~ y
=
=
x
y
1,
x
y
=
y
x
,
(x
y)*
=
y
x
y
=![]()
y.
По принципу двойственности:
f*
=
yz
(
(x
(y
z)
1))
=
yz![]()
z(x
(y
z)
1)
= z(
y(
x
z
))
= z(
y
(xz1))
= z(
y
(x
))
= z
y(z
xz![]()
)
= z(
yx
)
= z(xy).
Тогда f = (f*)* = [z(xy)]* = z(x~y).
Пример 5. Найти формулу для
f* и показать, что она эквивалентна
формуле N = (x(zt))
,
если f = (xyz~(tx
))
t.
f* =
((xyz)t(
y))(
t)
= (
t(
y)(xyz)
)(
t)
=
= (![]()
![]()
t(xyz)(
x
))(
t)
=
![]()
![]()
t(xyz)(![]()
x
tx
)
=
=
![]()
![]()
t(xyz)(![]()
x
)
=
(
x
t
zxxz)
=
(
tx
zxz)
=
(x(zt)).
