Thursday, December 27, 2018

Решение уравнения ¬Z(M)⊕¬Z(N)=> ¬A*Z(M&N) ≡ 1 в технике Bitwise2

Докажем следующее утверждение , по возможности
в наибольшей общности 
Обозначим {X}  двоичноe представлении натурального числа  X.
****************
 Теорема 1
****************
Пусть R,M,N - натуральные числа. R - минимальное,
удовлетворяющее условию {M OR N} =  {R OR {M&N}},
где OR -побитная дизъюнкция, а & - побитная конъюнкция
Тогда наименьшее А , удовлетворяющее уравнению
  ¬Z(M)⊕¬Z(N)=> ¬A*Z(M&N) ≡ 1
равно R.
Запишем уравнение в виде

(
¬Z(M)≡¬Z(N)) + ¬A*Z(M&N) ≡ 1
(Z(M)≡Z(N)) + ¬A*Z(M&N) ≡ 1
¬Z(M)*¬Z(N)  + Z(M)Z(N) + ¬A*Z(M&N) ≡ 1
¬(Z(M)+Z(N)) + Z(M OR N) + ¬A*Z(M&N) ≡ 1

Поскольку ¬X + X*Y = ¬X + Y 



Далее мы хотим применить  Утверждение 8 из
http://kpolyakov.spb.ru/download/bitwise2.pdf

Для этого предикат Z(M)(х)+Z(N)(х) должен быть истинным ,
однако если он ложен  то  ¬(Z(M)(х)+Z(N)(х)) = True
и у нас нет проблем с тождеством зависящем от А.
По факту Bitwise2  постоянно работает с предикатами значение,
которых Z(M)(x) = True  if x&M=0  otherwise Z(M)(x)=False.

¬Z(M&N) + Z(R)*Z(M&N) + ¬A*Z(M&N) ≡ 1
¬Z(M&N) + Z(R)+¬A ≡ 1
(A=>Z(R)) + (A=>¬Z(M&N)) ≡ 1 

Откуда A(min) = R

Рассмотрим пример

M = 56
N = 25

56 = 111000
"&" -  побитная конъюнкция
25 = 011001
===========
24 = 011000

56 = 111000
"v" - побитная  дизъюнкция

25 = 011001
===========
57 = 111001

33 - минимальное натуральное
такое,что

33 = 100001
"v" - побитная 
дизъюнкция 
24 = 011000
============
57 = 111001

Таким образом,
для уравнения
¬Z(56)⊕¬Z(25) => ¬A*Z(24)
1 (1)
Ответ: А(min) =33

для уравнения
¬Z(24)⊕¬Z(9) => ¬A*Z(8)
1     (2)
Ответ: А(min) = 17

No comments:

Post a Comment