Практикум по обратным логическим функциям
На основе метода, заложенного в алгоритме "Селигер", можно вывести соотношения для операций, обратных конъюнкции и дизъюнкции. Поскольку эти операции часто называются соответственно логическими умножением и сложением, то логично обратным операциям присвоить имена логического деления и логического вычитания. Впервые формулы для логического частного и логической разности для троичной логики получены Н.П.Брусенцовым[5].
Если логическое уравнение вида z=f(x1, x2, x3 .....xi .....xn) решается относительно одной из своих переменных, например, отыскивается обратная функция x1=fi(z, x2, x3 .....xi ..... xn), то можно воспользоваться более простым алгоритмом "Селигер-С" решения задачи.
Алгоритм "Селигер-С"
Пример 5
Дано: z = xу , v = x + у. Найти: у = z/x , у = v-x.
Решение
На основе формулы эквивалентности преобразуем исходную формулу z=xу. Тогда получим (z=xу) = zxу + z'(x'+у'). В соответствии с пп.4, 5 алгоритма "Селигер" получим у = xz+ix'z'+jx'z.
Решим ту же задачу посредством алгоритма "Селигер-С". Исходные уравнения представим в виде таблицы истинности. Тогда в соответствии с п.2 алгоритма "Селигер-С" построим частные таблицы истинности для у= z/x и у=v-x.
xy z v 00 0 0 01 0 1 10 0 1 11 1 1 xz y=z/x 00 i 01 j 10 0 11 1 xv y=v-x 00 0 01 1 10 j 11 i
В соответствии с п.3 алгоритма "Селигер-С" проведём минимизацию искомых функций в трёхзначной и комплементарной логиках.
Для комплементарной логики получим:
у = z/x = xz + ix'z' + jx'z у = u-x = x'v + ixv + ixv'Для трёхзначной логики уравнения имеют вид:
у = z/x = xz + ix' у = v-x = x'v + ix
Однозначным и более строгим решением являются уравнения комплементарной логики.
Пример 5
Дана система логических уравнений (В. С. Левченков "Булевы уравнения" - М.:1999 ):
ax = bc bx = ac Найти х.
Решение
Напрашивается простой и "очевидный" метод решения: сложить левые и правые части уравнений и сократить на общий множитель. В результате получим (a+b)x = (a+b)c. Откуда x = c, a = b. Ответ настораживает, тем более, что что решение противоречит принципу отыскания парных индивидов, поэтому проверим его на основе разработанных алгоритмов.
Действительно, сложить левые и правые части уравнений мы имеем право на основании правила (9П) Порецкого[35,стр,376]. Кстати, заодно и проверим это правило:
(9П) (e=c) —> (e+b=c+b) = ec'+e'c+(e+b)(c+b)+(e+b)'(c+b)' = ec'+e'c+ec+b+e'b'c' = 1;
Да, Порецкий не ошибся. Однако относительно сокращения на общий множитель великий русский логик нам ничего не сообщил. А так хочется это сделать, тем более что всё очевидно, и обычная алгебра нам не запрещает подобные операции. Проверим допустимость сокращения на общий множитель с помощью алгоритма "Импульс":
(cx=cy) —> (x=y) = cx(cy)'+(cx)'cy+xy+x'y' = cxy'+cx'y+xy+x'y' <> 1.
Оказывается, что алгебра логики не разрешает нам этакие вольности
По алгоритму "Селигер":
M = (ax = bc)( bx = ac) M' = (ax bc) + ( bx ac) = ab'x+ac'x+a'bc+bcx'+a'bx+bc'x+acx'+ab'c.
После занесения M'в карту Карно получим
M = a'b'+abcx+c'x'.
Откуда решение системы логических уравнений в соответствии с алгоритмом "Селигер" примет вид:
x = abc+ia'b'+jc(ab'+a'b). a = bcx+ic'x'+jb(cx'+c'x).
Заданная система уравнений может быть представлена графически при помощи скалярных диаграмм.
a ---==--= b ---===-- c --==---- a ---==--= b ---===-- c --==---- d -===---- d -===----
Подтвердим корректность метода на решении более прозрачной задачи.
Пример 6
Дана система логических уравнений: x = y u = v Найти решение системы.
Решение
M = (x = y)(u = v) = (xy + x'y')(uv + u'v') = u'v'(x'y' + xy)+uv(x'y' + xy)
По алгоритму "Селигер" получим y(x,u,v) = x(u = v)+j(u v)
Для перехода к y(x) достаточно в таблице истинности для полной единицы М вынести столбец значений y в графу функций и произвести синтез y(x) по вышеизложенным алгоритмам. В результате мы подтвердим исходное уравнение системы y(x) = x. Аналогично можно показать,что u(v) = v.
1.3. Отыскание обратных функций.
Используя алгоритм "Селигер" или "Селигер-С", можно получить полную систему обратных функций для двоичной логики. В таблице приведена полная система функций двоичной логики.
xy z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 z15 ------------------------------------------------------------------------ 00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Перестановкой столбцов у и z исходной таблицы строим таблицу истинности для полной системы обратных функций.
xz y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 00 I i i i 0 0 0 0 1 1 1 1 j j j j 01 J j j j 1 1 1 1 0 0 0 0 i i i i 10 I 0 1 j i 0 1 j i 0 1 j i 0 1 j 11 J 1 0 i j 1 0 i j 1 0 i j 1 0 i
Из таблицы обратных функций получаем полную симметричную систему обратных функций y = f1(x,z),а по алгоритму "Селигер" - y = f2(x):
у0 = iz'+jz y0 = j у1 = xz+ix'z'+jx'z y1 = x+jx' у2 = xz'+ix'z'+jx'z y2 = jx' у3 = i(xz+x'z')+j(xz'+x'z) y3 = ix+jx' у4 = x'z+ixz'+jxz y4 = x'+jx у5 = z y5 = 1 у6 = xz'+x'z y6 = x' у7 = x'z+ixz+jxz' y7 = x'+ix у8 = x'z'+ixz'+jxz y8 = jx у9 = xz+x'z' y9 = x у10 = z' y10 = 0 у11 = x'z'+ixz+jxz' y11 = ix у12 = i(xz'+x'z)+j(xz+x'z') y12 = ix'+jx у13 = xz+ix'z+jx'z' y13 = x+ix' - импликация у14 = xz'+ix'z+jx'z' y14 = ix' у15 = iz+jz' y15 = i
Кстати, переход от левой системы уравнений к правой легко выполняется простой заменой z на 1 и z' на 0. Аналогичные результаты мы получим, если таблицу прямых функций заменим скалярными диаграммами, а из них по алгоритму ТВАТ выведем соотношения y = f(x). Самой примечательной из полученных функций является y13 = x+ix' - импликация. Из этого выражения легко просматривается физический смысл импликации: из истинности x следует истинность y.
Решая 1-ю задачу Порецкого, мы заметили аналогию между рекурсивным вхождением функции и комплементарным значением i. Резонно предположить, что такая аналогия существует между комплементарным j и рекурсивным значением инверсии функции. Проверим это предположение на полученных одноаргументных функциях и убедимся в их обратимости с помощью формулы эквивалентности.
0) (y = j) (y = y') M = (y=y') = yy'+y'y = 0 1) (y = x+jx') (y = x+x'y') = (y = x+y') M = (y=x+y') = y(x+y')+y'(x+y')' = xy+y'x'y = xy 2) y = jx' x'y' M = (y=x'y') = yx'y'+y'(x'y')' = y'(x+y) = xy' 3) y = ix+jx' xy+x'y' M = (y=xy+x'y') = y(xy+x'y')+y'(xy'+x'y) = xy+xy' = x 4) y = x'+jx x'+xy' = x'+y' M = (y=x'+y') = y(x'+y')+y'(x'+y')' = x'y 5) y = 1 M = (y=1) = y&1+y'&0 = y 6) y = x' M = (y=x') = xy'+x'y 7) y = x'+ix x'+xy = x'+y M = (y=x'+y) = y(x'+y)+y'(x'+y)' = y+xy' = x+y 8) y = jx xy' M = (y=xy') = yxy'+y'(xy')' = x'y' 9) y = x M = (y=x) = x'y'+xy 10)y = 0 M = (y=0) = y&0+y'&1 = y' 11)y = ix xy M = (y=xy) = yxy+y'(xy)' = xy+y' = x+y' 12)y = ix'+jx x'y+xy' M = (y=x'y+xy')=y(x'y+xy')+y'(x'y'+xy)=x'y+x'y' = x' 13)y = x+ix' x+x'y = x+y M = (y=x+y) = y(x+y)+y'(x+y)' = y+x'y' = x'+y 14)y = ix' x'y M = (y=x'y) = yx'y+y'(x'y)' = x'y+y' = x'+y' 15)y=i y M = (y=y) = y&y+y'&y' = y+y' = 1
После обращения были получены все 16 прямых функций от двух аргументов без какого-либо искажения. Это подтверждает правильность всех алгоритмов решения логических уравнений и корректность комплементарной логики.
Заключение