- •1. Множества и бинарные отношения
- •Множества
- •Определения и примеры
- •1.1.1 Множество
- •Операции над множествами
- •Элементы комбинаторики
- •Бинарные отношения
- •Определения и примеры
- •2.1.2 Отображения
- •Операции над отношениями
- •Выполнение операций над отношениями
- •Свойства отношений
- •Эквивалентность и толерантность
- •2.4.1 Эквивалентность
- •2.4.3 Толерантность
- •2.4.6 Задача о наименьшем покрытии (ЗНП)
- •Алгоритм решения ЗНР
- •Отношения порядка
- •Строгий порядок
- •Свойства строгого порядка
- •Некоторые свойства дерева
- •Анализ отношений порядка
- •2.5.8 Решетки
- •2.5.10 Решетка
- •2.5.11 Булева решетка
- •Нормированные булевы решетки
- •Модели нормированной булевой решетки
- •Булевы функции (БФ)
- •Определения и примеры
- •Равенство булевых функций
- •3.3.1 СДНФ
- •3.3.3 СКНФ
- •3.3.5 Представление формул в СДНФ и СКНФ
- •Минимизация булевых функций
- •3.4.1 Импликанта
- •Полные системы булевых функций
- •2. Математическая логика
- •Логика высказываний
- •Основные понятия
- •4.1.7 Логическое следствие
- •4.1.8 Теоремы о логическом следствии
- •Логика предикатов
- •5.0.13 Связанные и свободные переменные
- •Предваренная нормальная форма
- •Стандартная нормальная форма
- •Подстановки и унификация
- •Метод резолюций для логики первого порядка
- •Исчисление высказываний
- •3. Графы
- •Определения и примеры
- •Определения графа
- •Части графа
- •Изоморфизм графов
- •Задание графов с помощью матриц
- •Матрица инциденций
- •Матрица соседства вершин
- •Матрица смежности
- •Типы графов
- •Обыкновенные графы
- •Графы Бержа
- •Помеченные и взвешенные графы
- •Другие способы задания графа
- •Связность графов
- •Маршруты, цепи, циклы
- •Число маршрутов
- •Компоненты связности
- •Нахождение компонент и бикомпонент
- •Кратчайшие цепи
- •Алгоритм Форда
- •Алгоритм Дейкстры
- •Обходы графа
- •Поиск в глубину на графе
- •Поиск в ширину на графе
- •Эйлеровы цепи и циклы
- •Эйлеровы пути
- •Гамильтоновы цепи и циклы
- •Цикломатика графов
- •Цикломатическое число
- •Деревья
- •Свойства дерева
- •Каркасы
- •Алгоритм нахождения каркаса графа.
- •Кратчайший каркас графа.
- •Алгоритм Прима.
- •Теорема о хорде каркаса.
- •Число каркасов графа.
- •Разрезы
- •Пространства суграфов
- •Пространство циклов
- •Пространство разрезов.
- •Потоки в сетях
- •Задача о максимальном потоке
- •Постановка задачи
- •Экстремальные части графа
- •Основные понятия
- •Покрытия
- •Задача о наименьшем покрытии
- •Паросочетания
- •Раскраска вершин графа
- •Хроматическое число
- •Оценки хроматического числа
- •Точные алгоритмы раскраски вершин
3.5. Полные системы булевых функций |
131 |
|
|
|
|
3.5 Полные системы булевых функций
Ранее было показано, что любая булева функция может быть представлена в ДНФ, в КНФ, или полиномом Жегалкина, то есть может быть выражена в базисах элементарных функций f¹; ¢; _g; или f1; ¢; ©g:
Определение. Подмножества функций © = ff1; : : : ; fmg; © µ Pn; через которые может быть выражена любая булева функция, называются функционально полными (ФП) системами булевых функций.
Теорема 3.10 Пусть ©1 функционально полная система и любая функция из нее может быть представлена суперпозицией функций из множества функций ©2. Тогда ©2 – функционально полная система.
Д о к а з а т е л ь с т в о . Булева функция f(x1; : : : ; xn) может быть представлена суперпозицией функций из полной
системы ©1 = ff0; f1; : : : ; fmg
f(x1; : : : ; xn) = f0(f1(x1; : : : ; xn); : : : ; fm(x1; : : : ; xn)):
Но любая функция f0; f1; : : : ; fm может быть представлена суперпозицией функций из множества ©2; следовательно любая f(x1; : : : ; xn) также может быть представлена суперпозицией функций из ©2. Таким образом, ©2 – функционально полная система. £
Пример 3.24. © = f ¹ ; ¢; _g – полная система; f ¹ ; ¢g тоже полная, так как функцию _ можно представить суперпозицией функций: x _ y = x¹y¹; система f ¹ ; _g полная, так как функцию ¢ можно представить суперпозицией x ¢ y = x¹ _ y:¹ Полную систему f ¹ ; ¢g можно представить суперпозицией x¹ = x # x; xy = x¹ _ y¹ = (x # x) # (y # y), а полную систему f¹; _g суперпозицией x¹ = xjx; x _ y = x¹y¹ = (xjx)j(yjy): Значит системы f#g и fjg тоже полные. J
Теорема 3.10 служит основанием для выбора функционально полных систем функций. Традиционно за исходную
132 |
Глава 3. Булевы функции (БФ) |
|
|
принимают полную систему f¹ ; ¢g и находят такую систему функций, в которой могут быть представлены функции ¹ и ¢:
Рассмотрим сначала такие множества функций, которые заведомо не являются функционально полными системами.
Определение. Множество © = ff1; : : : ; fmg
называется замкнутым классом функций, если суперпозиция любых функций из © принадлежит этому же множеству.
Множество всех булевых функций n переменных Pn = ffjf : f0; 1gn 7! 0f; 1gg – замкнутый класс, так как суперпозиция любых булевых функций есть булева функция. Рассмотрим некоторые из замкнутых подмножеств множества Pn:
1. Класс булевых функций, сохраняющих константу 0:
S0 = ffjf(0; 0; ¢ ¢ ¢ ; 0) = 0g
(на наборе всех нулей функция принимает значение 0). Классу S0 принадлежат, например, мажоритарная, ¢ и $
функции; j и # не принадлежат S0.
2. Класс функций, сохраняющих константу 1:
S1 = ffjf(1; 1; ¢ ¢ ¢ ; 1) = 1
(на наборе всех единиц функция принимает значение 1). Мажоритарная функция, ¢; _ сохраняют 1, а j и # не со-
храняют.
3. Класс самодвойственных функций
S¤ = ffjf = f¤g
(f(x1; : : : ; xn) = f¤(x1; : : : ; xn) = f¹(¹x1; : : : ; x¹n)).
Из элементарных функций самодвойственны только $ и ¹. 4. Класс монотонных функций
~ ~
SM = ffj~a 4 b ) f(~a) 6 f(b)g:
3.5. Полные системы булевых функций |
133 |
|
|
|
|
Функции ¢; _; мажоритарная монотонны, а j и # немонотонны. 5. Класс линейных функций
SL = ffjf = a0 © a1x1 © a2x2 © ¢ ¢ ¢ © anxng
(полином Жегалкина первой степени).
Линейны функции ¹ и $; а j; # и мажоритарная нелинейны.
Теорема 3.11 Классы S0; S1; S¤; SM ; SL замкнуты.
До к а з а т е л ь с т в о .
1.Суперпозиция функций из класса S0 сохраняет 0:
f(0; : : : ; 0) = f0(f1(0; : : : ; 0); : : : ; fk(0; : : : ; 0)) = f0(0; : : : ; 0) = 0:
2.Для класса S1 доказательство аналогмчно.
3.Класс самодвойственных функций S¤ замкнут:
f¤(x1; : : : ; xn) = f0¤(f1¤(x1; : : : ; xn); : : : ; fk¤(x1; : : : ; xn)) = f0(f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn))
4. В суперпозиции монотонных функций
f0(f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn))
~
подставим векторы ~a = (a1; : : : ; an) и b = (b1; : : : ; bn); такие,что
~
~a 4 b: Пусть
f(~a) = f0(f1(~a); : : : ; fk(~a)) = f0(~c);
~ |
(f1 |
~ |
~ |
~ |
f(b) = f0 |
(b); : : : ; fk(b)) = f0 |
(d): |
||
~ |
|
|
|
~ |
Так как ~a 4 b и функции f1; : : : ; fk монотонны, то ~c 4 d, а так |
||||
|
|
|
~ |
~ |
как f0 монотонна, то f0(~c) 6 f0(d). Значит f(~a) 6 f(b), то есть класс SM замкнут.
5. В суперпозиции линейных функций
f0(f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn))
каждую функцию можно представить в виде
f0(y1; : : : ; yk) = a0 © a1y1 © ¢ ¢ ¢ © akyk;
134 |
Глава 3. Булевы функции (БФ) |
|
|
f1(x1; : : : ; xn) = b10 © b11x1 © ¢ ¢ ¢ © b1nx1;
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡¡; fk(x1; : : : ; xn) = bk0 © bk1x1 © ¢ ¢ ¢ © bknxn;
тогда
f(x1; : : : ; xn) = f0(f1(x1; : : : ; xn); : : : ; fk(x1; : : : ; xn)) =
a0 © a1f1(x1; ¢ ¢ ¢ ; xn) © ¢ ¢ ¢ © akfk(x1; ¢ ¢ ¢ ; xn) =
a0 © a1(b10 © b11x1 © ¢ ¢ ¢ © b1nxn) © ¢ ¢ ¢ © ak(bk0 © bk1x1 © ¢ ¢ ¢ bknxn) = (a0©a1b10©¢ ¢ ¢©akbk0)©(a1b11©¢ ¢ ¢©akbk1)x1©¢ ¢ ¢©(anb1n©¢ ¢ ¢©akbkn)xn:
Каждая скобка есть константа, значит функция f(x1; : : : ; xn) линейна и класс SL замкнут. £
Следствие. Классы функций S0; S1; S¤; SM ; SL не являются полными.
Действительно, суперпозиции функций из каждого класса дают функции из того же класса.
Подход к построению функционально полной системы заключается в следующем. Используя функции, не сохраняющую константу 0, не сохраняющую константу 1 и
несамодвойственную можно представить константы 0 и 1. С помощью констант и немонотонной функции можно получить отрицание. С помощью констант, отрицания и нелинейной функции можно получить конъюнкцию или дизъюнкцию. Таким образом, суперпозицией этих функций можно представить функционально полные системы функций f¹; ¢g или f¹; _g: По теореме 3.10 такое множество функций также функционально полно.
Теорема 3.12 (Теорема Поста) Множество © 2 Pn булевых функций функционально полно тогда и только тогда, когда оно не является подмножеством ни одного из классов S0, S1, S¤; SM , SL. Другими словами, функционально полная система
3.5. Полные системы булевых функций |
135 |
|
|
|
|
функций должна содержать хотя бы одну функцию, не сохраняющую константу 0, хотя бы одну функцию, не сохраняющую константу 1, хотя бы одну нелинейную функцию, хотя бы одну несамодвойственную функцию и хотя бы одну немонотонную функцию.
До к а з а т е л ь с т в о .
Необходимость.
Предположим, что © содержит хотя бы одну функцию из любого из классов S 2 fS0, S1, S¤; SM , SLg. Так как класс S замкнут, то функция f 62S не может быть представлена никакой суперпозицией функций из S. Значит © не является функционально полным множеством.
Достаточность.
1.Из любой функции, не сохраняющей константу 0, можно получить либо константу 1, либо отрицание.
Пусть f(x1; : : : ; xn) не сохраняет 0. Тогда f(0; 0; : : : ; 0) = 1: Если f(1; 1; : : : ; 1) = 1; то функция одной переменной g(x) = f(x; x; : : : ; x) дает константу 1. Если f(1; 1; : : : ; 1) = 0; то g(x) = f(x; x; : : : ; x) = x:¹
Аналогично, из любой функции, не сохраняющей константу 1, можно получить либо константу 0, либо отрицание.
2.Из любой несамодвойственной функции с помощью отрицания можно получить константы 0 и 1.
Для несамодвойственной функции
f(x1; : : : ; xn) =6 f¤(x1; : : : ; xn)
существует такой набор ~a = (a1; : : : ; an), что f(a1; : : : ; an) 6= f¹(¹a1; : : : ; a¹n);
то есть
f(a1; : : : ; an) = f(¹a1; : : : ; a¹n): |
(?) |
Заменим каждый аргумент xi функции f(x1; : : : ; xn) на xai : Напомним, что 0x = x;¹ 1x = x: Для полученной функции одной переменной g(x) = f(xa1 ; : : : ; xan )
g(0) = f(0a1 ; : : : ; 0an ) = f(¹a1; : : : ; a¹n);
136 |
Глава 3. Булевы функции (БФ) |
|
|
g(1) = f(1a1 ; : : : ; 1an ) = f(a1; : : : ; an):
Учитывая равенство (?); получим, что g(0) = g(1): Таким образом, g(x) – одна константа, g¹(x) – другая константа.
3. Из любой немонотонной функции и констант 0 и 1 можно получить отрицание.
Для немонотонной функции f(x1; : : : ; xn~) существуют по |
||
крайней мере два набора ~a = (a1; : : : ; an) и b = (b1; : : : ; bn) та- |
||
~ |
~ |
~ |
кие, что ~a 4 b и f(~a) > f(b) |
(f(~a) = 1; f(b) = 0) . Выберем в ~a |
такие компоненты, для которых ai < bi (ai = 0; bi = 1) и подставим переменную x вместо ai = 0. Для полученной таким образом функции g(x) одной переменной имеем
g(0) = f(a1; : : : ; an) = 1; g(1) = f(b1; : : : ; bn) = 0;
то есть g(x) = x¹.
4. Из любой нелинейной функции с помощью подстановки констант и отрицания можно получить конъюнкцию или дизъюнкцию.
В представлении нелинейной функции полиномом Жегалкина сгруппируем конъюнкции таким образом, что первое слагаемое содержит конъюнкцию x1x2, второе содержит x1 и не содержит x2, третье слагаемое содержит x2 и не содержит x1; четвертое слагаемое содержит все остальные конъюнкции:
f(x1; : : : ; xn) = x1x2f1(x3; : : : ; xn) © x1f2(x3; : : : ; xn)©
© x2f3(x3; : : : ; xn) © f4(x3; : : : ; xn)
x1x2f1(x3; : : : ; xn) 6= 0, так как найдется хотя бы одна конъюнкция, содержащая x1x2 (x1 и x2 выбраны произвольно без нарушения общности). Это значит, что найдется такой набор a3; : : : ; an; что f1(a3; : : : ; an) = 1. Тогда
f(x1; x2; a3; : : : ; an) = x1x2 © x1f2(a3; : : : ; an)© ©x2f3(a3; : : : ; an) © f4(a3; : : : ; an) =
3.5. Полные системы булевых функций |
|
137 |
|||||
|
|
||||||
g(x1; x2) = x1x2 © c1x1 © c2x2 © c3; c1; c2; c3 2 f0; 1g: |
|||||||
Если c3 = 0, то |
|
|
|
|
|
||
если c1 |
= 0; c2 |
= 0, то g(x1; x2) = x1x2; |
|
(1 © x¹1) = x1x2 |
|||
если c1 |
= 0; c2 |
= 1, то g(¹x1 |
; x2) = x¹1x2 © x2 |
= x2 |
|||
(подставили отрицание в x1;) |
© x1 |
|
(1 © x¹2) = x1x2; |
||||
если c1 |
= 1; c2 |
= 0, то g(x1 |
; x¹2) = x1x¹2 |
= x1 |
|||
(подставили отрицание в x2;) |
© x1 © x2 = x1 _ x2: |
||||||
если c1 |
= 1; c2 |
= 1, то g(x1 |
; x2) = x1x2 |
Если c3 = 1, то все варианты получаются как отрицания вариантов при c3 = 0 (x © 1 = x¹).