Практикум по обратным логическим функциям

На основе метода, заложенного в алгоритме "Селигер", можно вывести соотношения для операций, обратных конъюнкции и дизъюнкции. Поскольку эти операции часто называются соответственно логическими умножением и сложением, то логично обратным операциям присвоить имена логического деления и логического вычитания. Впервые формулы для логического частного и логической разности для троичной логики получены Н.П.Брусенцовым[5].

Если логическое уравнение вида z=f(x1, x2, x3 .....xi .....xn) решается относительно одной из своих переменных, например, отыскивается обратная функция x1=fi(z, x2, x3 .....xi ..... xn), то можно воспользоваться более простым алгоритмом "Селигер-С" решения задачи.

Алгоритм "Селигер-С"

  1. Построить таблицу истинности для уравнения z=f(x1, x2 ..... xn).
  2. По исходной таблице истиннсти построить таблицу истинности для обратной функции вида x1=fi(z, x2 ......xn) простой перестановкой столбцов z и х1.
  3. По полученной таблице истинности построить обратную функцию x1=fi(z, x2, ..... 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 прямых функций от двух аргументов без какого-либо искажения. Это подтверждает правильность всех алгоритмов решения логических уравнений и корректность комплементарной логики.

Заключение

  1. Простота метода, заложенного в алгоритме "Селигер", позволяет решать логические уравнения от большого числа переменных.
  2. Минимизация функций в 3-значной и комплементарной логиках для двоичных аргументов несущественно отличается от традиционных методов двузначной логики.
  3. Парные термы для равносильных преобразований определяются набором термов, полученных на основе применения формулы эквивалентности к исходному логическому уравнению.
  4. Применение метода при выводе обратных логических функций показало, что однозначное решение для двоичных аргументов может быть получено лишь в комплементарной логике.
  5. Впервые получены все 16 обратных логических функций для двух аргументов.
  6. Комплементарная логика при аппаратной реализации позволяет значительно упростить решение проблемы самодиагностирования вычислительной техники: например появление j на любом выходе может свидетельствовать о сбое или отказе.
Hosted by uCoz