Логическая функция F задаётся выражением ((w → ¬x) ≡ (z → y)) ∧ (y ∨ w).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
| Переменная 1 | Переменная 2 | Переменная 3 | Переменная 4 | Функция |
|---|---|---|---|---|
| ??? | ??? | ??? | ??? | F |
| 1 | 1 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 1 |
| 0 | 0 | 1 |
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
| Переменная 1 | Переменная 1 | Функция |
|---|---|---|
| ??? | ??? | F |
| 0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Подберём переменные так, чтобы, выражение было ложно и при этом все переменные кроме одной были равны 1. Такой набор переменных: w = 1, z = 0, x = 1, y = 1. Сопоставляя полученные значения с первой строкой таблицы, получаем, что четвёртая переменная — это переменная z.
Рассмотрим вторую строку таблицы. Последовательно рассмотрим случаи, когда x = 1, y = 1, w = 1. В первом и третьем случаях выражение ложно, а во втором — истинно. Следовательно, третья переменная — переменная y.
Рассмотрим третью строку таблицы. Заметим, что y = 0, значит, для того, чтобы выражение было истинно, w должно быть равно 1. Третья и четвёртые переменные — y и z, первая переменная равна 0. Следовательно, w — вторая переменная.
Таким образом, оставшаяся переменная, переменная 1, — это переменная x.
Ответ: xwyz.
Приведем другое решение.
Составим таблицу истинности для выражения ((w → ¬x) ≡ (z → y)) ∧ (y ∨ w) вручную или при помощи языка Python:
Наборы переменных, при которых данное выражение равно 0.
print("x y z w")
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
for w in range(0, 2):
if not(((w <= (not x)) == (z <= y)) and (y or w)):
print(x, y, z, w)
В наборах переменные запишем в порядке х, y, z, w.
Получим следующие наборы:
(0, 0, 0, 0),
(0, 0, 1, 0),
(0, 0, 1, 1),
(1, 0, 0, 0),
(1, 0, 0, 1),
(1, 0, 1, 0),
(1, 1, 0, 1),
(1, 1, 1, 1).
Наборы переменных, при которых данное выражение равно 1.
print("x y z w")
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
for w in range(0, 2):
if ((w <= (not x)) == (z <= y)) and (y or w):
print(x, y, z, w)
В наборах переменные запишем в порядке х, y, z, w.
Получим следующие наборы:
(0, 0, 0, 1),
(0, 1, 0, 0),
(0, 1, 0, 1),
(0, 1, 1, 0),
(0, 1, 1, 1),
(1, 0, 1, 1),
(1, 1, 0, 0),
(1, 1, 1, 0).
Заметим из наборов переменных, при которых данное выражение равно 0, что единственный набор, содержащий ровно три единицы, — (1, 1, 0, 1). Следовательно, переменной z соответствует четвертый столбец.
Рассмотрим наборы переменных, при которых данное выражение равно 1. Ко второй строчке таблицы истинности могут подойти наборы: (1, 1, 0, 0), (0, 1, 1, 0) или (0, 1, 0, 1). В четвертом столбце таблицы истинности стоит z, которое во второй строке принимает значение 1, поэтому подойдет только набор (0, 1, 1, 0). Следовательно, переменной y соответствует третий столбец. Поскольку в третьей строке таблицы переменная y принимает значение 0, то подойдут наборы (1, 0, 1, 1) или (0, 0, 0, 1). Набор (1, 0, 1, 1) не подойдет, так как хотя бы одна из переменных x или w должна принимать значение 0, поэтому переменной x соответствует первый столбец, а переменной w соответствует второй столбец, что следует из набора (0, 0, 0, 1).

