Докажем следующее утверждение , по возможности
в наибольшей общности
Обозначим {X} двоичноe представлении натурального числа X.
Обозначим {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.
удовлетворяющее условию {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
(¬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