Алгоритм решения:
1) Кодирование: обозначение искомых с помощью булевых переменных (принимающих значения 0, 1) и описание содержания этих переменных.
2) Запись условия в виде системы логических уравнений, в правых частях которых — единицы.
Замечание. Если правая часть уравнения — нуль, то отрицанием левой части она приводится к единице.
3) Образование конъюнкции левых частей системы и приравнивание ее единице. Полученное уравнение называется характеристическим. Оно равносильно исходной системе уравнений: каждое решение системы является решением характеристического уравнения, и наоборот.
Обоснование. Пусть некоторый порядок значений переменных является решением системы уравнений. При подстановке в характеристическое уравнение он обращает каждый сомножитель конъюнкции в единицу, следовательно, и конъюнкция равна единице.
Верно и обратное — каждое решение характеристического уравнения (обращающее конъюнкцию в единицу) обращает в единицу все сомножители конъюнкции, следовательно, удовлетворяет системе уравнений.
4) Приведение левой части характеристического уравнения к ДНФ (в частности, к СДНФ).
Замечание. При раскрытии скобок в левой части характеристического уравнения по второму распределительному закону значительные упрощения получаются за счет использования законов противоречия, исключенного третьего, исключения повторений (сомножителей, слагаемых), а также поглощения.
5) Приравнивание каждого слагаемого СДНФ, независимо от других, единице и извлечение из уравнений (левые части которых — конъюнкции переменных или их отрицаний) значений переменных. Каждый их набор является решением задачи.
Обоснование. Каждый набор найденных значений переменных обращает в единицу хотя бы одно слагаемое дизъюнкции, т. е. является решением характеристического уравнения.
Замечание. Если после упрощений в ДНФ осталось одно слагаемое, задача имеет единственное решение, если более одного — несколько решений. В случае, когда в левой части характеристического уравнения все слагаемые уничтожаются, задача не имеет решения (данные не совместны).
Применим этот алгоритм к решению задачи.
Задача. (Кто смотрит телевизор?)
Семья состоит из пяти человек: Алексей (А), Вера (В), Глеб (Г), Даша (Д), Евгений (Е).
1. Если телевизор смотрит А, то смотрит и В;
2. смотрят либо Д, либо Е, либо оба вместе;
3. смотрят либо В, либо Г, но не вместе;
4. Д и Г либо смотрят вместе, либо вовсе не смотрят;
5. если смотрит Е, то смотрят А и Д.
Кто смотрит телевизор?
Решение:
1)
2) Записываем в виде системы логических уравнений:
3) Преобразуем в характеристическое уравнение:
4) Приведем левую часть характеристического уравнения к СДНФ:
5) Получили одно слагаемое, следовательно, задача имеет единственное решение. Приравнивание каждого слагаемого СДНФ единице и извлечение из уравнения значение переменных.
6)
Таким образом, получили ответ: телевизор смотрят Глеб и Даша.