информация, язык, интеллект № 3 (77) 2011
информация, язык, интеллект № 3 (77) 2011
информация, язык, интеллект № 3 (77) 2011
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
единицы в СДНФ; i, j – индексы, изменяющиеся<br />
в пределах соответственно от 1 до m и от 1 до n, по<br />
которым ведутся логическое суммирование и логическое<br />
перемножение.<br />
Присвоим каждой СДНФ свой номер. Для<br />
этого каждой СДНФ поставим в соответствие некоторый<br />
двоичный код длины k n . Длина кода совпадает<br />
с числом всех различных конституэнт<br />
единицы. Если в рассматриваемой СДНФ конституэнта<br />
единицы с номером i отсутствует, то в i-том<br />
разряде ее двоичного кода записываем 0, если присутствует,<br />
то записываем 1. Нумерацию разрядов<br />
двоичного кода в данном случае начинаем с нуля<br />
и ведем слева направо. Число, соответствующее<br />
полученному таким способом двоичному коду,<br />
будем считать номером СДНФ. В качестве СДНФ<br />
с номером 0 принимаем формулу 0. Например,<br />
номер СДНФ x 1 a x2 b ∨x1 b x2 c в алгебре с алфавитами<br />
А={a, b, c}, B={x 1 , x 2 } будет число 136 10 , соответствующее<br />
двоичному коду 010001000. Всего имеется<br />
2 kn различных СДНФ, то есть ровно столько,<br />
сколько существует всех различных конечных предикатов.<br />
Вместе с тем, каждой формуле соответствует<br />
единственный конечный предикат, каждому<br />
же конечному предикату соответствует некоторая<br />
своя СДНФ. Следовательно, между конечными<br />
предикатами и совершенными дизъюнктивными<br />
нормальными формами существует взаимно однозначное<br />
соответствие.<br />
Важно выяснить вопрос: можно ли с помощью<br />
приведенных выше тождеств преобразовать произвольную<br />
формулу алгебры конечных предикатов к<br />
СДНФ. Если да, то отсюда будет следовать, что система<br />
этих тождеств полна. Действительно, сравнивая<br />
между собой СДНФ двух формул, всегда можно,<br />
в силу единственности представления любого<br />
конечного предиката в виде СДНФ, решить вопрос<br />
о тождестве этих формул. Если СДНФ совпадают,<br />
то исходные формулы тождественны, если не совпадают,<br />
то они соответствуют различным предикатам.<br />
Такое преобразование существует. Следовательно,<br />
система тождеств (4) – (19) [1] алгебры<br />
конечных предикатов полна.<br />
Ниже приводится описание алгоритма преобразования<br />
произвольной формулы к СДНФ. Алгоритм<br />
сопровождается примером: А={a, b}, B={x 1 ,<br />
x 2 , x 3 }, требуется преобразовать к СДНФ формулу<br />
f≡(x 1 a ∨x2 b )(x1 a ∨x1 b x3 a )∨(x1 a ∨x2 a )(x2 b x3 b ∨x2 a x3 a ).<br />
1) Пользуясь тождествами (5), (7) и (8) [1], раскрываем<br />
в формуле все скобки:<br />
f≡x a<br />
1 (x1 a∨x1 bx3 a )∨x2 b (x1 a∨x1 bx3 a )∨<br />
∨x a<br />
1 (x2 bx3 b∨x2 ax3 a )∨x2 a (x2 bx3 b∨x2 ax3 a )≡<br />
≡(x a<br />
1 ∨x1 bx3 a )x1 a∨(x1 a∨x1 bx3 a )x2 b∨(x2 bx3 b∨x2 ax3 a )x1 a∨ ∨(x b<br />
2 x3<br />
b∨x2 ax3 a )x2 a≡x1 ax1 a∨x1 bx3 ax1 a∨x1 ax2 b∨x1 bx3 ax2 b∨ ∨x b<br />
2 x3<br />
bx1 a∨x2 ax3 ax1 a∨x2 bx3 bx2 a∨x2 ax3 ax2 a .<br />
НОрМАЛЬНЫЕ ФОрМЫ ФОрМуЛ АЛГЕБрЫ КОНЕЧНЫх ПрЕДИКАТОВ<br />
В результате получаем некоторую дизъюнкцию<br />
конъюнкций узнаваний предмета.<br />
2) Пользуясь тождествами (4)-(7), (10), (11),<br />
(15), (17) и (19) [1], производим упрощения в формуле:<br />
f≡x a<br />
1 ∨0⋅x3 a∨x1 ax2 b∨x1 bx2 bx3 a∨x1 ax2 bx3 b∨x1 ax2 ax3 a∨ ∨0⋅x b<br />
3 ∨x2 ax3 a≡x1 a∨0∨x1 ax2 b∨x1 bx2 bx3 a∨x1 ax2 bx3 b∨ ∨x a<br />
1 x2<br />
ax3 a∨0∨x2 ax3 a≡x1 a∨x1 ax2 b∨ ∨x b<br />
1 x2<br />
bx3 a∨x1 ax2 bx3 b∨x1 ax2 ax3 a∨x2 ax3 a .<br />
В результате получаем некоторую дизъюнктивную<br />
нормальную формулу предиката.<br />
3) Пользуясь тождествами (16) и (18) [1], во все<br />
конъюнкции вводим недостающие переменные:<br />
f≡x a<br />
1 (x2 a∨x2 b )(x3 a∨x3 b )∨x1 ax2 b (x3 a∨x3 b )∨x1 bx2 bx3 a∨ ∨x a<br />
1 x2<br />
bx3 b∨x1 ax2 ax3 a∨(x1 a∨x1 b )x2 ax3 a .<br />
4) Пользуясь тождествами (4)-(8) и (10) [1], снова<br />
раскрываем скобки и производим упрощения:<br />
f≡x a<br />
1 x2<br />
ax3 a∨x1 ax2 ax3 b∨x1 ax2 bx3 a∨x1 ax2 bx3 b∨x1 ax2 bx3 a∨ ∨x a<br />
1 x2<br />
bx3 b∨x1 bx2 bx3 a∨x1 bx2 bx3 a∨x1 ax2 bx3 b∨x1 ax2 ax3 a∨ ∨x a<br />
1 x2<br />
ax3 a∨x1 bx2 ax3 a≡x1 ax2 ax3 a∨x1 ax2 ax3 b∨x1 ax2 bx3 a∨ ∨x a<br />
1 x2<br />
bx3 b∨x1 bx2 ax3 a∨x1 bx2 bx3 a .<br />
В результате получаем искомую СДНФ.<br />
От совершенной дизъюнктивной нормальной<br />
формы нетрудно перейти к таблице обозначаемого<br />
ею конечного предиката. Для этого нужно выделить<br />
в таблице все наборы значений аргументов, совпадающие<br />
с наборами показателей узнаваний букв<br />
конституэнт единицы, фигурирующих в СДНФ.<br />
Против выделенных наборов надо выписать значение<br />
предиката 1, против остальных наборов –<br />
значение 0. Рассмотрим пример. Пусть А={a, b, c},<br />
B={x1 , x2 }. Предикат задан совершенной дизъюнктивной<br />
нормальной формой t≡x a<br />
1 x2<br />
b∨x1 ax2 c∨x1 bx2 a .<br />
Этому предикату соответствует табл. 1.<br />
Таблица 1<br />
х 1 а a a b b b c c с<br />
x 2 а b c a b c a b с<br />
t 0 1 1 1 0 0 0 0 0<br />
Для обратного перехода от таблицы значений<br />
конечного предиката к его СДНФ выделяем в таблице<br />
все те наборы аргументов, на которых этот<br />
предикат обращается в 1. Далее, для каждого такого<br />
набора выписываем соответствующую конституэнту<br />
единицы, принимая в ней показатели<br />
узнаваний букв в соответствии с этим набором.<br />
Наконец, все полученные таким способом конституэнты<br />
единицы соединяем знаками дизъюнкции.<br />
Рассмотрим пример. Предикат задан табл. 2.<br />
Таблица 2<br />
x 1 0 0 0 1 1 1 2 2 2<br />
x 2 0 1 2 0 1 2 0 1 2<br />
t 1 0 0 0 1 0 0 1 0<br />
15