Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИИ.1часть_2.doc
Скачиваний:
9
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

5.7.2. Алгоритм Куайна для днф

Алгоритм Куайна для ДНФ позволяет проверить выполнимость и общезначимость приведенной дизъюнктивной нормальной формы.

Пусть р – элементарное высказывание, а S – приведенная ДНФ, которая может быть представлена в виде:

S= Sp S p  (Sр\ Sp),

где Sp – дизъюнкты, содержащие высказывание р;

S p – дизъюнкты, содержащие р;

Sp = (S\(Sp S p)).

Алгоритм

  1. Если S = , то S – выполнима.

  2. Если S = F, то S – невыполнима.

  3. Иначе:

а) выбирается p, входящее в S;

б) определяются множества Sp, S p, Sp;

в) получение Sp из Sp удалением р;

г) получение S p из S p удалением  p .

S – невыполнимо тогда и только тогда, когда невыполнимы два множества (SpSр) и (S p Sр). Если р – Т, то S  (S p  Sр), если р – F, то S  (Sp Sр).

{F, r}- не выполняется.

5.7.3. Принцип резолюций

В исчислении высказываний не существует общего, по-настоящему эффективного критерия для проверки выполнимости КНФ, однако есть удобный метод для выявления невыполнимости множества дизъюнктов.

Множество дизъюнктов S не выполнимо тогда и только тогда, когда логическое следствие из него есть пустой дизъюнкт, т. е. дизъюнкт, всегда принимающий значение F. Таким образом, невыполнимость множества дизъюнктов S можно проверить, порождая логические следствия из него до тех пор, пока не получится пустой дизъюнкт.

Для порождения логических следствий используется следующая схема рассуждений. Пусть A, B, X – формулы. Предположим, что (АХ) и (ВХ) – истинны. Если Х принимает значение Т, то В также принимает значение Т. Если Х принимает значение F, то А принимает значение Т. Следовательно, АВ принимает значение Т.

То есть, {А Х, ВХ} ├ АВ, или {Х А, Х В}├ АВ, где Х – высказывание, а А и В – дизъюнкты. Это правило резолюций.

Лемма. Пусть S1, S2 – дизъюнкты нормальной формы S, l – литера. Если l S1 и  l S2, то r = (S1\{l})  (S2\{l}), называется резольвентой дизъюнктов S1 и S2 и является логическим следствием нормальной формы S.

Следствие. Нормальные формы S и S{r} логически эквивалентны.

Алгоритм доказательства невыполнимости логической формулы

  1. Если в формуле нет невыполнимых дизъюнктов, то выбираются l, S1 и S2, такие, что l S1 и  l S2.

  2. Строится резольвента r.

  3. Заменяется S на S{r}.

  4. Процесс повторяется до порождения пустого дизъюнкта, это означает, что формула невыполнима.

Пример. Доказать невыполнимость следующего множества дизъюнктов S={pq, pr, qr, p}.

Упорядочим множество S: S={pq, pr, qr, p}.

1 2 3 4

Строим резольвенты для дизъюнктов, допускающих построение резольвенты:

  1. (1, 3) pr;

  2. (1, 4)  q;

  3. (2, 3) p q;

  4. (2, 4) r;

  5. (2, 5) p;

  6. (4, 5) r;

  7. (4, 9) F.

Замечания:

1. Если множество S не содержит ни одной пары дизъюнктов, допускающих резольвенту, то оно выполнимо.

2. Если выполнение алгоритма закончилось порождением пустого дизъюнкта, то установлена невыполнимость исходного S.

3. Может случиться, что выполнение алгоритма не завершится.

Применение метода резолюций означает построение соответствующего семантического дерева снизу вверх.