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

