Это в лекции 3. |
Булевы функции и их представления
Булевы функции и логика высказываний
Как мы уже отметили, Дж. Буль ввел булевы функции для решения логических задач. В логике под высказыванием понимают некоторое повествовательное предложение, относительно которого можно сказать, истинно оно или ложно. Логика высказываний занимается выяснением истинности тех или иных высказываний, связью между истинностью различных высказываний и т.п.
Булевы функции могут служить полезным инструментом при решении многих логических задач.
Каждую переменную можно рассматривать как некоторое элементарное высказывание, принимающее одно из двух значений: 1 (истина) или 0 (ложь). Сложным высказываниям сооответствуют формулы, построенные из элементарных высказываний с помощью логических связок. Вычисляя значения задаваемых ими функций, можно устанавливать зависимости истинностных значений сложных высказываний от значений входящих в них элементарных высказываний. Рассмотрим следующий пример.
Пример 3.1.Пусть известно, что в дорожном проишествии участвовали три автомобиля с водителями A, B и C. Свидетели проишествия дали следующие показания:
- 1-ый свидетель: если A виновен, то из остальных B и C хоть один не виновен;
- 2-ой свидетель: если C не виновен, то виновен кто-то один из пары A, B но не оба вместе;
- 3-ий свидетель: в столкновении виновны не менее двух водителей.
Опишите показания свидетелей в виде булевых формул и постройте таблицу значений их конъюнкции. Можно ли на основании этих показаний сделать вывод, что C является виновником проишествия? Можно ли однозначно определить второго виновника?
Для ответа на эти вопросы введем три переменные, соответствующие следующим
высказываниям: X1
: " виновен A ", X2
: " виновен B " и X3
: " виновен C ". Тогда показания 1-го свидетеля описываются формулой ,
показания 2-го свидетеля -
,
а 3-го свидетеля -
.
Показаниям всех трех свидетелей соответствует конъюнкция этих формул
.
Составим таблицы значений для функций
а затем - для
.
X1 | X2 | X3 | (X1 | ![]() |
![]() |
X2 | ![]() |
![]() |
X3)) |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
X1 | X2 | X3 | ![]() |
X3 | ![]() |
(( X1 | ![]() |
X2) | ![]() |
![]() |
(X1 | ![]() |
X2))) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
\ 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
X1 | X2 | X3 | ((X1 | ![]() |
X2) | ![]() |
((X1 | ![]() |
X3) | ![]() |
( X2 | ![]() |
X3))) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
X1 | X2 | X3 | (\Phi1 | ![]() |
(\Phi2 | ![]() |
\Phi3)) |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 |
1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
Из этой таблицы следует, что на двух наборах: (X1=0, X2=1, X3=1)
и (X1=1, X2=0, X3=1)
(строки с этими наборами подчеркнуты).
Поскольку в обоих случаях X3=1
, можно сделать вывод, что С является одним из виновников
проишествия. Однозначно определить второго виновника полученная от свидетелей информация не позволяет,
так как в одном случае им является А, а в другом - В.
Важную роль в логике играют понятия тождественно истинной и выполнимой формулы.
Булева формула называется тождественно истинной, если она истинна
при любых значениях входящих в нее переменных, т.е. функция
тождественно равна 1.
Булева формула называется выполнимой, если существует такой набор
значений переменных, на котором она истинна, т.е. функция
равна 1 хоть на одном наборе аргументов.
Как проверить тождественную истинность или выполнимость формулы
На первый взгляд кажется, что ответ прост - построим по
таблицу для
функции
, и, если в столбце значений стоят только единицы, то заключаем, что
тождественно истинна, если там есть хоть одна единица, то
выполнима.
К сожалению, этот способ пригоден только для формул с небольшим числом переменных.
Уже для нескольких десятков и сотен переменных он не годится из-за большого размера
получающейся таблицы - нетрудно подсчитать, что число 290
превосходит количество атомов во всей видимой
вселенной.
В математической логике построены аксиоматические системы, позволяющие формализовать человеческие рассуждения о выводимости одних тождественно истинных формул из других (см., например, [15]). В некоторых случаях они позволяют доказать тождественную истинность достаточно длинных формул, имеющих регулярную структуру. Но в общем случае и они практически не применимы для произвольных формул с большим числом переменных.
В теории сложности алгоритмов имеется ряд результатов (они выходят за рамки нашего курса), которые свидетельствуют о том, что эффективных алгоритмов для проверки выполнимости или тождественной истинности произвольной булевой формулы не существует. Вместе с тем для некоторых подклассов формул эти задачи решаются достаточно эффективно. Один такой подкласс - Хорновские формулы - будет рассмотрен далее в "Хорновские формулы и задача получения продукции"