Миша заполнял таблицу истинности логической функции F
¬x ∨ ((w → y) → z)
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
| ??? | ??? | ??? | ??? | F |
|---|---|---|---|---|
| 1 | 0 | |||
| 0 | 1 | 0 | 0 | |
| 0 | 0 |
Определите, какому столбцу таблицы истинности соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция F задана выражением ¬x ∨ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
| ??? | ??? | F |
| 0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу — переменная x. В ответе нужно написать: yx.
Составим таблицу истинности для выражения
¬x ∨ ((w → y) → 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(not(x) or ((w <= y) <= z)):
print(x, y, z, w)
Далее выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z, w. Получим следующие наборы:
(1, 0, 0, 0),
(1, 1, 0, 0),
(1, 1, 0, 1).
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Заметим, что только во втором столбце таблице истинности нет нулей. Следовательно, второй столбец может быть только переменной x. Тогда вторая строка таблицы истинности соответствует набору (1, 1, 0, 0).
Тогда третий столбец соответствует переменной y, так как только эта переменная, кроме переменной x, принимает значение 1.
Первая строка соответствует набору (1, 1, 0, 1), тогда первый столбец соответствует переменной w, а четвертый столбец переменной z.
Ответ: wxyz.
Приведём построение таблицы Юрия Красильникова на языке Python.
from itertools import product
print('x y z w')
for x,y,z,w in product((0,1),repeat = 4):
if not ( not x or ( not (not w or y) or z) ): # импликацию w->y заменяем на not w or y
print(x,y,z,w)

