
- •Введение
- •Глава 1. Множества, отношения и функции
- •1. Задание множества
- •2. Операции над множествами
- •3. Разбиение множества. Декартово произведение
- •4. Отношения
- •5. Операции над отношениями
- •6. Функция
- •7. Отношение эквивалентности. Фактор-множество
- •8. Отношения порядка
- •9. Вопросы и темы для самопроверки
- •10. Упражнения
- •Глава 2. Алгебраические структуры
- •1. Операции и предикаты
- •2. Алгебраическая система. Алгебра. Модель
- •3. Подалгебры
- •4. Морфизмы алгебр
- •5. Алгебра с одной операцией
- •6. Группы
- •7. Алгебра с двумя операциями. Кольцо
- •8. Кольцо с единицей
- •9. Поле
- •10. Решетки
- •11. Булевы алгебры
- •12. Матроиды
- •13. Вопросы и темы для самопроверки
- •14. Упражнения
- •Глава 3. Булевы функции
- •2. Формулы
- •3. Упрощения в записях формул
- •4. Равносильность формул
- •5. Важнейшие пары равносильных формул
- •6. Зависимости между булевыми функциями
- •7. Свойства операций штрих Шеффера, стрелка Пирса и сложения по модулю два
- •8. Элементарные суммы и произведения. Конституенты нуля и единицы
- •9. Дизъюнктивные и конъюнктивные нормальные формы
- •10. Представление произвольной булевой функции в виде формул
- •11. Совершенные нормальные формы
- •12. Полином Жегалкина
- •13. Сокращенные дизъюнктивные нормальные формы
- •14. Метод Квайна получения сокращенной д.н.ф.
- •15. Тупиковые и минимальные д.н.ф.
- •16. Метод импликантных матриц
- •17. Минимальные конъюнктивные нормальные формы
- •18. Полнота системы функций. Теорема Поста
- •21. Функциональная декомпозиция
- •22. Вопросы и темы для самопроверки
- •23. Упражнения
- •Глава 4. Элементы комбинаторики
- •1. Правило суммы для конечных множеств
- •2. Правило произведения для конечных множеств
- •3. Выборки и упорядочения
- •5. Число всевозможных разбиений конечного множества. Полиномиальная теорема
- •6. Метод включения и исключения
- •7. Задача о беспорядках и встречах
- •8. Системы различных представителей
- •9. Вопросы и темы для самоконтроля
- •10. Упражнения по комбинаторике
- •Глава 5. Теория графов
- •1. Основные типы графов
- •2. Изоморфизм графов
- •3. Число ребер графа
- •4. Цепи, циклы, пути и контуры
- •5. Связность графа. Компоненты связности
- •6. Матрица смежности
- •7. Матрицы смежности и достижимости
- •8. Критерий изоморфизма графов
- •9. Матрица инциденций
- •10. Деревья
- •11. Задача о минимальном соединении
- •12. Центры дерева
- •13. Ориентированные деревья
- •14. Эйлеровы графы
- •15. Гамильтоновы графы
- •16. Планарные графы
- •17. Задача о кратчайшей цепи между произвольными вершинами графа
- •18. Алгоритм Дейкстры нахождения кратчайших путей от заданной вершины орграфа
- •19. Потоки в сетях
- •20. Вопросы и темы для самопроверки
- •21. Упражнения
- •Список литературы

54
3. БУЛЕВЫ ФУНКЦИИ
Булевы операции, булева алгебра, булевы функции (то же, что и функции алгебры логики) начались систематически исследоваться в работах Дж. Буля (1815-1864) по символической логике.
§ 1. Основные булевы функции.
Булевой переменной называется переменная, имеющая только два возможных значения, которые будем обозначать через 0 и 1. Положим Е={0,1}.
Функция f(x1,x2,…,xn) называется булевой
Джордж Буль (переключательной) функцией, если она может принимать только одно из двух возможных значений 0 или 1 в зависимости от значений своих аргументов x1,x2,…,xn,
каждая из которых тоже принимает одно из значений 0 или 1. Таким образом, f(x1,x2,…,xn) булева функция тогда и только тогда, когда f функция из En в E.
Булеву функцию можно задать таблицей ее значений, которая и называется таблицей истинности.
Одной из основных булевых функций является функция отрицания,
значение которой определяется по таблице
: |
x |
( x) |
|
|
|||
Отрицание является одноаргументной булевой |
0 |
1 |
|
1 |
0 |
||
функцией. Выражение «( x)» читается «не x» и функцию |
отрицания можно интерпретировать как образование нового высказывания из высказывания x с помощью частицы «не». Введем следующие двухаргументные булевы функции по таблице:
x |
y |
(x&y) |
(x y) |
(x y) |
(x≡y) |
(x+y) |
(x y) |
(x↓ y) |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
55
Функция (x&y) называется конъюнкцией x и y. Выражение «(x&y)» читается «x и y» и эту функцию можно интерпретировать как соединение двух высказываний x, y с помощью союза «и».
Функция (x y) называется дизъюнкцией x и y. Выражение «(x y)» читается «x или y» и эту функцию можно интерпретировать как соединение двух высказываний x, y связкой «или», где «или» понимается в соединительном (хотя бы одно), а не разделительном (либо-либо) смысле.
Функция (x y) называется импликацией x и y. Выражение «(x y)» читается «если x, то y» и эту функцию можно интерпретировать как образование из двух высказываний нового высказывания: «если x, то y». При этом x называется посылкой, а y заключением.
Функция (x ≡ y) называется эквивалентностью. Выражение «(x ≡ y)» можно читать «x эквивалентно y».
Функция (x+y)называется сложением по модулю два.
Функции (x y) и (x↓ y) называются штрихом Шеффера и стрелкой Пирса соответственно.
Используя введенные функции, можно строить более сложные булевы функции с помощью операций суперпозиции функций, т. е. подстановки функций в функцию, например: ( (x&y)), ((x y)&(x≡ z)), ((x&y) ( z)) и т. п. Значения полученных функций можно определять по таблицам истинности.
Таблица истинности функции от одного аргумента имеет две строки, от двух переменных – четыре, от трех переменных – восемь строк. В общем случае таблица истинности булевой функции от n переменных имеет ровно 2n строк, ибо добавление каждой новой переменной удваивает число строк.
Покажем, что число различных булевых функций от n переменных
равно N = 22n . Булева функция f(x1,x2,...,xn) принимает значения 0 либо 1 в зависимости от значений переменных x1,x2,...,xn. Число различных наборов значений переменных x1,x2,...,xn, как известно, равно 2n. На каждом из 2n различных наборов функция f(x1,x2,...,xn) может принимать одно из двух значений. Следовательно, число различных булевых функций от n
аргументов будет равно 22n . С ростом n число N булевых функций от n аргументов резко растет. Например: для n=1 N=4; для n=2 N=16; для n=3 N=256; для n=5 N - более четырех миллиардов.
Переменная xk (1≤ k≤ n) функции f(x1,x2,...,xn) называется фиктивной или несущественной, если значение этой функции не меняются при изменении значений xk. Например, (x (x&y)) ~ x, следовательно, y является фиктивной переменной для функции f(x,y)=(x (x&y)).
Булеву функцию можно задать с помощью таблицы, формулы (аналитически), графика и т.п. Графически булеву функцию f(x1,x2,...,xn) задают с помощью n-мерного куба следующим образом. Считаем наборы значений переменных x1,x2,...,xn вершинами n-мерного куба. Те вершины, на которых булева функция равна единице, помечаем точкой или звездочкой, остальные вершины оставляем без пометок. Например, функции (x y), (x≡ y)

56
и (x (y&z)) можно представить их графиками, как на рис. 3.1 а, б и в соответственно.
Иногда булеву функцию называют переключательной функцией.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(0,1) |
(1,1) |
(0,1) |
(1,1) |
|
(0,0,1) |
(0,1,1) |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
(1,0,1) |
|
|
|
|
(1,1,1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
(0,0,0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(0,1,0) |
|
|
|
||
|
|
|
|
|
|
|
|
|
(1,0,0) |
|
(1,1,0) |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
(0,0) |
(1,0) |
(0,0) |
(1,0) |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а) |
|
|
б) |
|
|
в) |
|
|
|
||||||
|
|
|
|
|
|
|
|
Рис. 3.1 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
§ 2. Формулы
Введем понятие формулы, с помощью которых можно задавать булевы функции. Эти формулы иногда называют пропозициональными формами или формулами алгебры (логики) высказываний.
Индуктивное определение формулы:
1)каждая булева переменная (x,y,z,…,x1,x2,…) является формулой;
2)если А и В формулы, то ( А), (А&В), (А В), (А В), (А≡В), (А В) и (А↓ В) тоже формулы;
3)только те выражения являются формулами, для которых это следует из пп. 1) и 2).
Примеры формул: x, ( y), ((x&y) ( z)).
Заглавные буквы латинского алфавита (А,В,C ,...) или те же буквы с числовыми индексами (А1,А2,...,В1,В2,...,С1,С2,...) употребляются для обозначения произвольных формул.
Как определено выше, каждая булева переменная может принимать значения 1 либо 0, которые считаем их (истинностными) значениями. Формулы являются аналитической записью булевых функций. В предыдущем параграфе были введены основные булевы функции, представленные в виде формул, и определены (истинностные) значения этих функций (формул).
Истинностное значение формул (булевых функций) можно определить с помощью таблиц истинности. Существуют различные методы построения таблиц истинности. Первый метод состоит в подробных вычислениях.

57
Например, для формулы (((x&y) z) x) имеем следующую таблицу истинности.
x |
y |
z |
(x&y) |
((x&y) z) |
(((x&y) z) x) |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Составление таблицы истинности можно сократить, выписывая шаг за шагом под каждой операцией значения той составляющей формулы, для которой применяется эта операция. Например, для той же формулы
(((x&y) z) x) получаем таблицу:
x |
y |
z |
(((x & y) z) x) |
||
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Следующий метод построения таблиц истинности называют алгоритмом Квайна. В формуле выбирается некоторая переменная, например, та, которая чаще всего встречается в рассматриваемой формуле. Выбранной переменной (для формулы D=(((x&y) z) x) это будет переменная x) приписывается значение 1 либо 0. Далее проводят вычисления, где возможно, при выбранном значении этой переменной. Если x=1, то для формулы D=(((x&y) z) x), вне зависимости от значении y и z, легко получить, что D=1. При x=0 и z=0 получим снова, что D=1. Наконец, если x=0 и z=1, то D=0. В результате получим сокращенную запись таблицы истинности, содержащую всего три строки (в данном случае результат не зависит от значений переменной y):