Решение логических задач с помощью логики высказываний

Алгоритм решения:

1) Кодирование: обозначение искомых с помощью булевых переменных (принимающих значения 0, 1) и описание содержания этих переменных.

2) Запись условия в виде системы логических уравнений, в правых частях которых — единицы.

Замечание. Если правая часть уравнения — нуль, то отрицанием левой части она приводится к единице.

3) Образование конъюнкции левых частей системы и приравнивание ее единице. Полученное уравнение называется характеристическим. Оно равносильно исходной системе уравнений: каждое решение системы является решением характеристического уравнения, и наоборот.

Обоснование. Пусть некоторый порядок значений переменных является решением системы уравнений. При подстановке в характеристическое уравнение он обращает каждый сомножитель конъюнкции в единицу, следовательно, и конъюнкция равна единице.

Верно и обратное — каждое решение характеристического уравнения (обращающее конъюнкцию в единицу) обращает в единицу все сомножители конъюнкции, следовательно, удовлетворяет системе уравнений.

4) Приведение левой части характеристического уравнения к ДНФ (в частности, к СДНФ).

Замечание. При раскрытии скобок в левой части характеристического уравнения по второму распределительному закону значительные упрощения получаются за счет использования законов противоречия, исключенного третьего, исключения повторений (сомножителей, слагаемых), а также поглощения.

5) Приравнивание каждого слагаемого СДНФ, независимо от других, единице и извлечение из уравнений (левые части которых — конъюнкции переменных или их отрицаний) значений переменных. Каждый их набор является решением задачи.

Обоснование. Каждый набор найденных значений переменных обращает в единицу хотя бы одно слагаемое дизъюнкции, т. е. является решением характеристического уравнения.

Замечание. Если после упрощений в ДНФ осталось одно слагаемое, задача имеет единственное решение, если более одного — несколько решений. В случае, когда в левой части характеристического уравнения все слагаемые уничтожаются, задача не имеет решения (данные не совместны).

Применим этот алгоритм к решению задачи.

Задача. (Кто смотрит телевизор?)

Семья состоит из пяти человек: Алексей (А), Вера (В), Глеб (Г), Даша (Д), Евгений (Е).

1. Если телевизор смотрит А, то смотрит и В;

2. смотрят либо Д, либо Е, либо оба вместе;

3. смотрят либо В, либо Г, но не вместе;

4. Д и Г либо смотрят вместе, либо вовсе не смотрят;

5. если смотрит Е, то смотрят А и Д.

Кто смотрит телевизор?

Решение:

 

1)

 

2) Записываем в виде системы логических уравнений:

 


3) Преобразуем в характеристическое уравнение:

 

 

4) Приведем левую часть характеристического уравнения к СДНФ:

 

 

5) Получили одно слагаемое, следовательно, задача имеет единственное решение. Приравнивание каждого слагаемого СДНФ единице и извлечение из уравнения значение переменных.

 

6)

 

Таким образом, получили ответ: телевизор смотрят Глеб и Даша.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: