На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных a, b, c, d.
Решение на Python:
Составим таблицу истинности для выражения вручную или при помощи языка Python:
from itertools import *
print("d a b c")
for a, b, c, d in product((0, 1), repeat=4):
if not ((((a or b) <= c)) or (b == d) or c):
print(d, a, b, c)
Далее выпишем те наборы переменных, при которых данное выражение равно 0.
В наборах переменные запишем в порядке d, a, b, c.
Получим следующие наборы:
(0, 0, 1, 0),
(1, 1, 0, 0),
(0, 1, 1, 0),
Сопоставим эти наборы с приведённым в задании фрагментом таблицы истинности.
Рассмотрим строку таблицы истинности №1. Заметим, что только она может соответствовать набору (0, 0, 1, 0). Так как единственное значение 1 среди переменных принимает переменная b, то ей соответствует 3-й столбец.
Рассмотрим оставшиеся строки таблицы истинности. Тогда 2-й столбец соответствует переменной a, а 1-й столбец — переменной d.
Следовательно, переменные идут по столбцам в порядке dabc.
Логическое решение:
Шаг 1. Находим столбец c
Во всех найденных наборах переменная c принимает значение 0.
В таблице этому соответствует 4-й столбец.
4-й столбец — это c.
Шаг 2. Что должно выполняться в остальных столбцах
Остаются условия:
- not ((((a ∨ b) <= c)) ∨ (b ≡ d) ∨ c) = 1
Важно: каждая строка таблицы должна гарантировать выполнение этих условий, а не «позволять подобрать значения».
Шаг 3. Подбор переменных
Если считать:
- 1-й столбец — d
- 2-й столбец — a
- 3-й столбец — b
- 4-й столбец — c
то во всех 3 строках фрагмента условия выполняются.
Итоговый ответ
Переменные идут по столбцам в порядке:
dabc