02 Булевы функции. Таблицы истинности. Булев куб.
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Действительно ли любую булеву функцию можно представить в СДНФ, то есть в виде
Как мы помним, чтобы записать функцию В СДНФ, надо написать дизъюнкцию конъюнкций всех
возможных наборов переменных или их отрицаний, на которых функция равна 1.
Однако если мы рассмотрим функцию, тождественно равную нолю:
То справа получится пустая дизъюнкция - ведь нет ни одного набора, на котором функция была бы
равна 1. Поэтому формально тождественный ноль выразить в СДНФ нельзя.
Комментарий. Однако, через систему тождественный ноль все таки
выражается, например, как
.
Нет
Ошибка.
Попробуйте повторить позже
Написать СДНФ для функции .
Для начала, запишем таблицу истинности этой функции.
Далее, чтобы записать СДНФ, нужно написать дизъюнкцию конъюнкций всех возможных наборов
переменных или их отрицаний, на которых функция равна 1. Причем в каждом дизъюнкте мы берем
переменную без отрицания, если в соответствующем наборе она была равна 1, и с отрицанием, если она
была равна 0.
Тогда для такой СДНФ будет выглядеть так:
.
Ошибка.
Попробуйте повторить позже
Написать таблицу истинности и СДНФ для функции
Таблица истинности:
Тогда для такой СДНФ будет выглядеть так:
Ошибка.
Попробуйте повторить позже
Можно ли функцию выразить, пользуясь только функциями
и
?
Заметим, что и
обладают таким свойством, что они равны 1, если обе
и
равны 1.
Следовательно, и любая функция, составленная при помощи композиции из конъюнкций и
дизъюнкций, тоже будет на наборе принимать значение единица.
Однако на наборе
принимает значение ноль.
Следовательно, нельзя выразить никакой композицией
и
.
Нет
Ошибка.
Попробуйте повторить позже
Доказать, что функция
принимает значение 1 на любом наборе входных данных.
Комментарий. Этот поучительный пример говорит о том, что было бы поспешно
интерпретировать функцию импликации как союз
ЕСЛИ
, ТО
.
Поскольку странно считать, что какие бы два высказывания мы ни взяли, либо первое
следует из второго, либо второе из первого. А если функция
принимает всегда значение 1, то это можно было бы по неосторожности прочесть
именно так.
Действительно, построив таблицу истинности, убеждаемся:
Ошибка.
Попробуйте повторить позже
Для функции , заданной своей таблицей истинности
выяснить, какие из её переменных являются существенными, а какие - несущественными. Задать эту функцию формулой так, чтобы все переменные в этой формуле были существенными.
1. Поймем вначале, какие переменные у нее являются существенными, а какие - нет.
Во-первых, легко заметить, что - существенная переменная, поскольку есть два набора
отличающиеся только в первой координате, на которых функция различна:
Далее, - тоже существенная переменная, поскольку есть два набора
отличающиеся только в третьей координате, на которых функция различна:
Переменная - наоборот, несущественная. Поскольку на всех возможных наборах, отличающихся
только во второй координате:
наша функция совпадает (на первых двух наборах она равна единице, а на всех остальных парах
наборов она равна нулю).
Следовательно, переменная - несущественная.
В таком случае, от переменной можно насильно избавиться, и получить уже функцию от двух
переменных
, которую мы не будем отличать от исходной функции
.
Как избавиться от ? Ну, просто вычеркнуть столбец
из таблицы истинности нашей
функции:
И что же, на этом все? Нет конечно. Должна ведь получиться таблица истинности функции от двух
переменных, а у нас получилась пока ерунда - функция уже от двух переменных, но таблица у неё
слишком длинная
.
Теперь надо склеить полностью совпадающие столбцы таблицы в один (а совпадающие столбцы
обязательно будут, это, собственно, и означает, что была фиктивной). Получим такую таблицу
истинности:
2. Как теперь задать эту функцию формулой? Во-первых, можно просто построить её СДНФ - это вообще универсальный способ перейти от таблице истинности к формуле. Но можно поступить быстрее. Ясно, что если взять отрицание этой функции:
То мы получим обыкновенную дизъюнкцию . Поэтому наша исходная функция - это
отрицание дизъюнкции, т.к. если
, то
(здесь мы воспользовались законом двойного отрицания).
, а переменная
- несущественная.
Ошибка.
Попробуйте повторить позже
a) Из теоремы о существовании СДНФ вывести, что любую (точнее, почти любую) булеву функцию можно разложить в виде
где .
Такой вид называется совершенной конъюнктивной нормальной формой функции .
b) Представить в СКНФ булеву функцию , заданную формулой
a) Поступим аналогично с СДНФ. Во-первых, очевидно, что если функция равна нулю только на
наборе
, то
(просто-напросто левая и правая части равенства равны нулю одновременно, и равны единице
одновременно).
Но тогда верен и более общий факт. Любую
функцию
можно представить в
виде
где .
Почему любая стоит в кавычках? Из этого правила есть ровно одно исключение. По аналогии с тем,
как в СДНФ не получится выразить тождественно нулевую функцию, в нашем случае, то есть в
СКНФ, не получится выразить тождественно единичную функцию. Все остальные - можно.
b) Как же выразить эту функцию
в СКНФ? Надо для начала составить её таблицу истинности.
А далее, чтобы выписать СКНФ нашей функции, мы должны просто написать конъюнкцию по всем
наборам, на которых равна 0 всевозможных дизъюнкций переменных или их отрицаний, причем в
дизъюнкцию переменная входит с отрицанием, если соответствующая координата в соответствующем
наборе равна единице. Получаем: