- •2. Функции алгебры логики
- •2.1. Элементарные функции алгебры логики
- •Теорема о замене подформул на эквивалентные
- •Некоторые свойства элементарных функций
- •2.3 Принцип двойственности
- •Пример 1. Покажем с помощью таблицы истинности, что константа 0 двойственна к 1:
- •Пример 3. Покажем, что функция х1х2 двойственна к x1&x2, функция х1х2 двойственна к функции x1|x2.
- •Лемма о несамодвойственной функции
- •Теорема о разложении функции по переменным
- •2.5. Полнота, примеры полных систем
- •Полные системы
- •Представление функции в виде полинома Жегалкина
- •Теорема Жегалкина
- •2.6. Замыкание и замкнутые классы
- •Важнейшие замкнутые классы в р2
- •Теорема Поста о полноте
- •Теорема о достаточности четырех функций.
- •2.7. Функции k - значной логики
- •Теорема о полной в Рk системе функций
- •4. Логика высказываний
- •4.1. Введение в логику высказываний
Пример 3. Покажем, что функция х1х2 двойственна к x1&x2, функция х1х2 двойственна к функции x1|x2.
x1 x2 |
f=х1х2 |
f* |
g=x1|x2 |
g*=x1x2 |
0 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 = ((xy) z) (y(xyz)). Покажем, что она эквивалентна формуле N = z(xy).
Найдем (xy)* и (xy)*.
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 |
Из таблиц видно, что
(xy)* = x ~ y = = xy1, xy =yx,
(xy)* =y xy =y.
По принципу двойственности:
f* = yz((x(yz)1)) = yzz(x(yz)1) = z(y(xz)) = z(y(xz1)) = z(y(x)) = zy(zxz) = 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)(xtx) =
= t(xyz)(x) = (xtzxxz) =(txzxz)
= (x(zt)).
Лемма о несамодвойственной функции
Подстановкой функций и в несамодвойственную функцию можно получить одну из констант.
Доказательство. Пусть – несамодвойственная функция. Тогда существует набор , для которого . Построим функцию , заменив единицы в на , а нули – на. Так как , то . Заметим, что .
Тогда , т.е. . Следовательно, функция есть одна из констант.
Теорема о разложении функции по переменным
Пусть f(x1, ..., xn) P2. Тогда для любого m: 1 ≤ m ≤ n допустимо представление:
f(x1, ..., xm, xm+1, ..., xn) = ,
где дизъюнкция берется по всем наборам из 0 и 1, которое называется разложением функции f по переменным x1, ..., xn.
Прежде чем доказать утверждение, рассмотрим примеры.
Пример 1. m = 1, запишем разложение по переменным х:
f(x1, ..., xn) = = f(0, x2 , …,xn)x1f(1, x2, ..., xn). (1)
Пример 2. m=2, запишем разложение по переменным х и :
f(x1,x2,…xn) = =
.
Если f(x, x) = xx, то последняя формула дает xx= xx.
Доказательство. Для доказательства возьмем произвольный набор ,,n) и покажем, что левая и правая части формулы (1) принимают на этом наборе одинаковые значения. Слева имеем f .n. Cправа : .
Дизъюнкция берется по всевозможным наборам (, ..., m). Если в этих наборах хотя бы одно i i (1≤i≤m), то = 0 и , следовательно, ненулевой член будет только на наборе (, ..., m) = (, ..., m), тогда f .n.
Следствие 1. Любую функцию f(x1, ..., xn) не равную тождественно нулю можно представить в виде: , причём единственным образом. Этот вид называется совершенной дизъюнктивной нормальной формой функции f(x1, ..., xn) и записывается СДНФ.
Доказательство. Существование СДНФ для функции не равной тождественно нулю вытекает из предыдущей теоремы. Покажем, что эта СДНФ единственная. В самом деле, имеется n-местных функций, не равных нулю тождественно. Подсчитаем число различных СДНФ от n переменных. Путь означает число сочетаний из n элементов по k. Тогда число одночленных СДНФ равно . Число k-членных СДНФ равно . Число n-членных СДНФ равно . Число всех различных СДНФ
Итак, функций реализуются посредством СДНФ, т.е. каждой функции соответствует единственная СДНФ.
Замечание. – элементарная конъюнкция ранга n по числу входящих переменных, предполагается, что при i j , хi хj. СДНФ для f(x1, ..., xn) –дизъюнкция элементарных конъюнкций ранга n. Если функция представлена в виде дизъюнкций элементарных конъюнкций, где ранг хотя бы одной элементарной конъюнкции меньше n, то такая форма называется дизъюнктивной нормальной формой (ДНФ).
Cледствие 2. Любая функция алгебры логики может быть представлена в виде формулы через отрицание, & и .
а) Если f ≡ 0, то f(x1, ..., xn) = &.
б) Если f(x1, ..., xn) 0 тождественно, тогда ее можно представить в виде СДНФ, где используются только связки , &, . СДНФ дает алгоритм представления функции в виде формулы через &, , .
Следствие 3. Мы умеем представлять функцию в виде . Нельзя ли представить ее в виде . Пусть функция f(x1, ..., xn) 1 тождественно. Тогда функция f* 0 тождественно, и ее можно представить в виде СДНФ:
.
По принципу двойственности заменим & на и наоборот, получим
(2)
называется элементарной дизъюнкцией ранга n. Представление функции в виде (2) называется совершенной конъюнктивной нормальной формой или в краткой записи – СКНФ. СКНФ для f(x1, ..., xn) – конъюнкция элементарных дизъюнкций ранга n. КНФ для f(x1, ..., xn) – конъюнкция элементарных дизъюнкций, где ранг хотя бы одной элементарной дизъюнкции меньше n.
Пример 4. Пусть f(x1, x2, x3) = x1 (x2(x3 ~ x1)). Представим ее в виде СКНФ, для этого получим таблицу истинности.
x1 |
x2 |
x3 |
x3~x1 |
x2 (x3~x1) |
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 |
1 0 1 0 0 1 0 1 |
1 1 1 0 1 1 0 1 |
1 1 1 1 1 1 0 1 |
Функция равна нулю только на наборе (1, 1, 0), поэтому
f(x1 x2 x3)=x1x2x3 =x10x20x31= x3.