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

