© К. Поляков, 2009-2021
Тема: Анализ таблиц истинности логических выражений.
Что проверяется:Умение строить таблицы истинности и логические схемы.
1.5.1. Высказывания, логические операции, кванторы, истинность высказывания1.1.6. Умение строить модели объектов, систем и процессов в виде таблицы истинности для логического высказыванияПро обозначенияК сожалению, обозначения логических операций И, ИЛИ и НЕ, принятые в «серьезной» математической логике (
,
,
¬), неудобны, интуитивно непонятны и никак не проявляют аналогии с обычной алгеброй. Автор, к своему стыду, до сих пор иногда путает
и
. Поэтому на его уроках операция «НЕ» обозначается чертой сверху, «И» – знаком умножения (поскольку это все же логическое умножение), а «ИЛИ» – знаком «+» (логическое сложение).
В разных учебниках используют разные обозначения. К счастью, в начале задания ЕГЭ приводится расшифровка закорючек (
,
,
¬), что еще раз подчеркивает проблему.
Что нужно знать:
-
условные обозначения логических операций
¬ A,
не A (отрицание, инверсия)
A B,
A и B (логическое умножение, конъюнкция)
A B,
A или B (логическое сложение, дизъюнкция)
A →
B импликация (следование)
A
B эквивалентность (равносильность)
-
операцию «импликация» можно выразить через «ИЛИ» и «НЕ»:
A →
B = ¬ A B или в других обозначениях
A →
B =
-
иногда для упрощения выражений полезны формулы де Моргана:
¬ (A B) = ¬ A ¬ B
Пример задания:
Р-22 (демо-2021). Логическая функция
F задаётся выражением
(
x
y) ¬(
y
z) ¬
w.
На рисунке приведён частично заполненный фрагмент таблицы истинности функции
F, содержащий
неповторяющиеся строки. Определите, какому столбцу таблицы истинности функции
F соответствует каждая из переменных
x,
y,
z, w.
?
| ?
| ?
| ?
| F
|
1
|
| 1
|
| 1
|
0
| 1
|
| 0
| 1
|
| 1
| 1
| 0
| 1
|
В ответе напишите буквы
x,
y,
z, w в том порядке, в котором идут соответствующие им столбцы. Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Решение (построение таблицы истинности для F = 1): -
перепишем выражения в виде
-
поскольку имеем логическое произведение значение w обязательно должно быть равно 0, то есть, в столбце w таблицы должны быть все нули; это возможно только в последнем столбце:
?
| ?
| ?
| w
| F
|
1
|
| 1
| 0
| 1
|
0
| 1
|
| 0
| 1
|
| 1
| 1
| 0
| 1
|
-
теперь определим все комбинации переменных, для которых функция равна 1 (их не должно быть много!)
-
чаще всего в выражении встречается переменная y, поэтому мы сначала примем y = 0, а затем – y = 1.
-
при y = 0 (и w = 0) получаем
, что справедливо только при x = 1и z = 1:
-
при y = 1 (и w = 0) получаем
, что справедливо при z = 0 и любом x, это даёт ещё два варианта:
x
| y
| z
| w
| F
|
0
| 1
| 0
| 0
| 1
|
1
| 1
| 0
| 0
| 1
|
-
объединим три полученных строки:
x
| y
| z
| w
| F
|
1
| 0
| 1
| 0
| 1
|
0
| 1
| 0
| 0
| 1
|
1
| 1
| 0
| 0
| 1
|
-
видим, что в столбце z должна быть одна единица и два нуля, это возможено только в первой строке исходной таблицы:
z
| ?
| ?
| w
| F
|
1
|
| 1
| 0
| 1
|
0
| 1
|
| 0
| 1
|
0
| 1
| 1
| 0
| 1
|
-
при z = 1нужно, чтобы y = 0, поэтому второй столбец – это y, а третий – x:
z
| y
| x
| w
| F
|
1
| 0
| 1
| 0
| 1
|
0
| 1
| 0
| 0
| 1
|
0
| 1
| 1
| 0
| 1
|
-
Ответ: zyxw.
Решение (построение таблицы с помощью электронных таблиц, П.Е. Финкель, г. Тимашевск) -
поскольку во время компьютерного экзамена есть возможность использовать электронные таблицы, можно построить таблицу истинности с их помощью
-
заполняем первую часть таблицы, перечисляя все комбинации переменных в порядке возрастания двоичного кода:
-
для каждой строчки определяем выражения, входящие в логическое произведение, а затем – значение функции:
-
сортируем строки таблицы по столбцу H по убываниию:
-
удаляем строки, где функция равна 0; можно также скрыть вспомогательные столбцы E, F, G:
-
дальше рассуждаем так же, как и при теоретическом решении
-
Ответ: zyxw.
Решение (построение таблицы с помощью программы, А.С. Гусев, г. Москва, https://youtu.be/RRL1Wal9ImU): -
поскольку во время компьютерного экзамена есть возможность использовать среды программирования, для построения частичной таблицы истинности (всех строк, при которых F=1) можно написать переборную программу на Python
-
перебор выполняем во вложенном цикле:
for x in 0, 1:for y in 0, 1:for z in 0, 1:for w in 0, 1:# вычисление функции F# вывод (x, y, z, w), если F=1 -
для вычисления значения функции необходимо понимать, как логические операторы записываются на языке программирования; в Python их можно реализовать следующим образом:
∧ конъюнкция
andдля языков, где логическое значение True воспринимается как 1, а False – как 0, можно использовать обычное умножение *
∨ дизъюнкция
or¬ отрицания
not()≡ тождество
==⊕ строгая дизъюнкция
!=→ импликация – для импликации в python оператора нет, но импликацию можно преобразовать в дизъюнкцию; например, a → b можно записать как ¬a ∨ b, а это в свою очередь записать как