Построение таблиц истинности для логических функций
Логическая функция ― это функция, в которой переменные принимают только два значения: логическая единица или логический ноль. Истинность или ложность сложных суждений представляет собой функцию истинности или ложности простых. Эту функцию называют булевой функцией суждений f (a, b).
Любая логическая функция может быть задана с помощью таблицы истинности, в левой части которой записывается набор аргументов, а в правой части ― соответствующие значения логической функции.
При построении таблицы истинности необходимо учитывать порядок выполнения логических операций. Операции в логическом выражении выполняются слева направо с учетом скобок в следующем порядке:
1. инверсия;
2. конъюнкция;
3. дизъюнкция;
4. импликация и эквивалентность.
Для изменения указанного порядка выполнения логических операций используются круглые скобки.
Предлагается следующий алгоритм построения таблицы истинности. 1. Определить количество наборов входных переменных ― всевозможных сочетаний значений переменных, входящих в выражения, по формуле: Q=2n , где n ― количество входных переменных. Оно определяет количество строк таблицы. 2. Внести в таблицу все наборы входных переменных. 3. Определить количество логических операций и последовательность их выполнения. 4. Заполнить столбцы результатами выполнения логических операций в обозначенной последовательности.
Чтобы не повторить или не пропустить ни одного возможного сочетания значений входных переменных, следует пользоваться одним из предлагаемых ниже способов заполнения таблицы.
Способ 1. Каждый набор значений исходных переменных есть код числа в двоичной системе счисления, причем количество разрядов числа равно количеству входных переменных. Первый набор ― число 0. Прибавляя к текущему числу каждый раз по 1, получаем очередной набор. Последний набор ― максимальное значение двоичного числа для данной длины кода.
Например, для функции от трех переменных последовательность наборов состоит из чисел:
Способ 2. Для функции от трех переменных последовательность данных можно получить следующим путем: а) разделить колонку значений первой переменной пополам и заполнить верхнюю половину нулями, нижнюю половину единицами; б) в следующей колонке для второй переменной половинку снова разделить пополам и заполнить группами нулей и единиц; аналогично заполнить вторую половинку; в) так делать до тех пор, пока группы нулей и единиц не будут состоять из одного символа.
Способ 3. Воспользоваться известной таблицей истинности для двух аргументов. Добавляя третий аргумент, сначала записать первые 4 строки таблицы, сочетая их со значением третьего аргумента, равным 0, а затем еще раз записать эти же 4 строки, но теперь уже со значением третьего аргумента, равным 1. В результате в таблице для трех аргументов окажется 8 строк:
Например, построим таблицу истинности для логической функции:
Количество входных переменных в заданном выражении равно трем (A,B,C). Значит, количество входных наборов Q=23=8.
Столбцы таблицы истинности соответствуют значениям исходных выражений A,B,C, промежуточных результатов и (B V C), а также искомого окончательного значения сложного арифметического выражения :
A
B
C
B V C
Для операций конъюнкции, дизъюнкции и инверсии определены законы булевой алгебры, позволяющие производить тождественные (равносильные) преобразования логических выражений.
Законы логики 1. ¬¬ А <=> A закон двойного отрицания; 2. A&B <=> B&A коммутативность конъюнкции; 3. AVB <=> BVA коммутативность дизъюнкции; 4. A&(B&C) <=> (A&B)&C ассоциативность конъюнкции; 5. AV(BVC) <=> (AVB)VC ассоциативность дизъюнкции; 6. A&(BVC) <=> (A&B)V(A&C) дистрибутивность конъюнкции относительно дизъюнкции; 7. AV(B&C) <=> (AVB)&(AVC) дистрибутивность дизъюнкции относительно конъюнкции; 8. A&A <=> A 9. AVA <=> A 10. AV¬A <=> И закон исключенного третьего; 11. A&¬A <=> Л закон непротиворечия; 12. A&И <=> A 13. AVИ <=> И 14. A&Л <=> Л 15. AVЛ <=> A 16. ¬(A&B) <=> ¬ A V ¬ B законы де Моргана; 17. ¬(AVB) <=> ¬ A & ¬ B 18. A => B <=> ¬ A V B замена импликации.
Основываясь на законах, можно выполнять упрощение сложных логических выражений. Такой процесс замены сложной логической функции более простой, но равносильной ей, называется минимизацией функции. Пример 1. Упростить выражения так, чтобы в полученных формулах не содержалось отрицания сложных высказываний. Решение
Пример 2. Минимизировать функцию
Решение
При упрощении выражения использовались формулы поглощения и склеивания. Пример 3. Найти отрицание следующего высказывания: "Если урок будет интересным, то никто из учеников (Миша, Вика, Света) не будет смотреть в окно". Решение Обозначим высказывания: Y ― "Урок интересный"; M ― "Миша смотрит в окно"; B ― "Вика смотрит в окно"; C ― "Света смотрит в окно". При упрощении выражения использовались формула замены операций и закон де Моргана. Пример 4. Определить участника преступления, исходя из двух посылок: 1) "Если Иванов не участвовал или Петров участвовал, то Сидоров участвовал"; 2) "Если Иванов не участвовал, то Сидоров не участвовал". Решение Составим выражения: I ― "Иванов участвовал в преступлении"; P ― "Петров участвовал в преступлении"; S ― "Сидоров участвовал в преступлении". Запишем посылки в виде формул: Тогда
Проверим результат, используя таблицу истинности:
Ответ: Иванов участвовал в преступлении.
Построение логической функции по ее таблице истинности Мы научились составлять таблицу истинности для логической функции. Попробуем решить обратную задачу. Пусть дана таблица истинности для некоторой логической функции Z(X,Y):
X
Y
Z
0 0 1 1
0 1 0 1
1 0 1 0
Рассмотрим строки, где значение истинности функции Z истинно (Z=1). Функцию для этой таблицы истинности можно составить следующим образом: Z(X,Y) = (¬ X& ¬Y)V(X& ¬Y). Каждой строке, где функция истинна (равна 1), соответствует скобка, представляющая собой конъюнкцию аргументов, причем если значение аргумента О, то мы берем его с отрицанием. Все скобки соединены между собой операцией дизъюнкции. Полученную формулу можно упростить, применив законы логики: Z(X,Y) <=> ((¬X& ¬Y) VX)&(( ¬X&Y)V ¬Y) <=> (XV( ¬X& ¬Y)) &( ¬YV(¬X&¬Y)) <=> ((XV¬X)&(XV ¬Y))&(( Y¬V ¬X)&( ¬YV ¬Y)) <=> (1&(XV ¬Y))&(( ¬YV ¬X)& ¬Y)<=> (XV ¬Y)&(( ¬YV ¬X)& ¬Y). Проверьте полученную формулу: составьте таблицу истинности для функции Z(X,Y). Запишите правила конструирования логической функции по ее таблице истинности: 1. Выделить в таблице истинности те строки, в которых значение функции равно 1. 2. Выписать искомую формулу в виде дизъюнкции нескольких логических элементов. Число этих элементов равно числу выделенных строк. 3. Каждый логический элемент в этой дизъюнкции записать в виде конъюнкции аргументов функции. 4. Если значение какого―либо аргумента функции в соответствующей строке таблице равно 0, то этот аргумент мы берем с отрицанием.