Логическая функция F задаётся выражением (x → y) ∧ (y → z). На рисунке приведён фрагмент таблицы истинности функции F. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z.
| Перем. 1 | Перем. 2 | Перем. 3 | Функция |
|---|---|---|---|
| ??? | ??? | ??? | F |
| 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу, затем – буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x →y , зависящее от двух переменных – x и y, и таблица истинности:
| Перем. 1 | Перем. 2 | Функция |
|---|---|---|
| ??? | ??? | F |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Тогда первому столбцу соответствовала бы переменная x, а второму столбцу — переменная y. В ответе следовало бы написать: xy.
Раскроем две импликации:
(¬x ∨ y) ∧ (¬y ∨ z)
Поскольку все значения F в таблице равны 1, то можно предположить, что x соответствует 3 столбец, т. к. тогда ¬x будет всегда равен 1. По той же логике z всегда выгодно брать 1 и сопоставить ему 1 столбец.
Ответ: zyx.
Приведём другое решение на языке Python.
Составим таблицу истинности для выражения (x → y) ∧ (y → z). Выпишем те наборы переменных, при которых данное логическое выражение равно 1. В наборах переменные стоят в порядке x, y, z. Итак, эти наборы:
(0, 0, 0),
(0, 0, 1),
(0, 1, 1),
(1, 1, 1).
Соотнесём эти наборы с представленным фрагментом таблицы истинности.
Рассмотрим в полученных результатах второй и третий наборы. Предположим, что z - первый столбец данной таблицы истинности. При z = 1 единице также равен y, a x равен 0 (третий набор значений). Второй набор тоже совпадает с данной таблицей истинности. Исходя из этого, получаем последовательность zyx.
Составим таблицу истинности при помощи языка 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(x) or y) and (not(y) or z):
print(x, y, z)

