Миша заполнял таблицу истинности логической функции
F = ((y → ¬x) ≡ (y ∨ z)) → ¬w,
но успел заполнить лишь фрагмент из четырёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
| ??? | ??? | ??? | ??? | F |
| 0 | 0 | 0 | ||
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 0 | ||
| 1 | 0 |
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Составим таблицу истинности для выражения F = ((y → ¬x) ≡ (y ∨ z)) → ¬w вручную или при помощи языка Python:
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(((y <= (not x)) == (y or z)) <= (not w)):
print(x, y, z, w)
Далее выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z, w. Получим следующие наборы:
(0, 0, 1, 1),
(0, 1, 0, 1),
(0, 1, 1, 1),
(1, 0, 1, 1).
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Поскольку только переменная w принимает значение 1 во всех строках, то ей соответствует столбец 2, так как в остальных столбцах присутствует значение 0.
Рассмотрим четвертый столбец таблицы истинности. Заметим, что переменная в этом столбце три раза принимает значение 0. Три раза значение 0 принимает переменная x, то то ей соответствует 4 столбец.
Последняя строка соответствует набору (0, 1, 1, 1). Тогда первый столбец соответствует переменной y, а третий столбец переменной z.
Ответ: ywzx.
Приведем решение на языке Python.
from itertools import product as p, permutations as pp
f = lambda x, y, z, w: ((y <= (not x)) == (y or z)) <= (not w)
for a1, a2, a3, a4, a5, a6, a7, a8 in p((0,1), repeat=8):
s = [(0, a1, a2, 0), (1, a3, 0, 0), (a4, a5, 1, 0), (a6, a7, 1, a8)]
if len(s)==len(set(s)):
for x, y, z, w in pp((0,1,2,3)):
if not any([f(i[x], i[y], i[z], i[w]) for i in s]):
print(f'x = {x+1}; y = {y+1}; z = {z+1}; w = {w+1}')
# x = 4; y = 1; z = 3; w = 2

