Re: логические преобразования
- From
- Alex Kozhushko ()
- To
- Dmitry Kovtun
- Date
- 2002-12-04T11:20:40Z
- Area
- RU.ALGORITHMS
From: "Alex Kozhushko" <alxrie@sibmail.ru>
Добрый день, Дмитрий!
"Dmitry Kovtun" <dep_ovt@ordgok.com> wrote in message
news:asi5bm$1lka$1@mail.zp.ua...
DK> Нужно доказать являются ли формулы
DK> (P-Q)-(P-R) и (P-(Q&R) равносильными, т.е. если
DK> их СДНФ (или СКНФ) идентичны то эти две формулы тождественно равны.
> На бумаге с ручкой в руках для небольших формул это сделать не
> очень трудно, заглядывая в
> конспект и книгу начинаем преобразовывать формулы, сначала избавляясь
> от импликации и эквиваленции, а потом просматривая все правила для
> тождественных преобразований, выбираем подходящие для текущего состояния
> формулы.
>
> Напимер
> (P-Q)-(P-R)=(P-(Q&R)
> (^P|Q)-(^P|R)=(^P|Q&R)
> ^(^P|Q)|(^P|R)=(^P|Q)&(^P|R)
> (P|^Q)|(^P|R)=(^P|Q)&(^P|R)
> Для правой части имеем КНФ, теперь нужно добавить R в левую скобку
> и Q в правую чтобы получить СКНФ...... затем куча преобразований .....
> вот собственно и не понятно как реализовать этот алгоритм
> чтобы машина из сложной формулы делела ее совершенную нормальную форму.
1. Предполагается, что формула - дерево, листья - атомы, прочие вершины (не
листья) содержат операторы. Если это не так - построить дерево по формуле.
2. Сначала преобразуете в КНФ - рекурсией по структуре формулы.
(а) Если формула - атом, то она уже в КНФ.
(б) Если формула - отрицание атома, то она уже в КНФ.
(и) Если формула - отрицание неатомарной формулы, то операнд нужно
преобразовать в КНФ (по этому же алгоритму), применить правило де Моргана,
результат опять преобразовать в КНФ.
(г) Если формула - дизъюнкция формул, каждый из операндов нужно
преобразовать в КНФ, воспользоваться распределительным законом. В результате
получим КНФ.
(д) Если формула - конъюнкция формул, то каждый из операндов нужно
преобразовать в КНФ. Конъюнкция КНФ, очевидно, является КНФ.
(е) Если формула - импликация, то каждый из операндов нужно преобразовать в
КНФ, затем по правилам (б) или (в) построить отрицание второго операнда, и
затем применить правило (г).
Этот алгоритм заведомо завершается для любой формулы.
3. Теперь преобразуем КНФ в СКНФ
Строим список атомов во всех сравниваемых формулах, циклом проходим по КНФ и
дополняем каждый член недостающими атомами.
4. Для удобства сравнения теперь имеет смысл упорядочить члены СКНФ.
С уважением,
Алексей
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)