Tuesday, February 19, 2019

Алгебра базисных предикатов по Е.А. Мирончик (2017) versus Bitwise2

Изначально техника, используемая ниже была введена
в работе http://kpolyakov.spb.ru/download/mea18bit.pdf 
Существует также статья в журнале "Информатика в школе" №7 2017 несколько более удобная для первого чтения, но только как твердая копия, он-лайн версии нет.

**************
Теорема 1
**************
Для выполнения  ∀ x∈N: E(k,x) => E(m,x) = True
необходимо и достаточно, чтобы множество единичных битов "k" полностью входило во множество единичных битов "m"

Необходимость
Пусть j(1),..,j(s) - номера единичных битов "k" ,
упорядоченное по убыванию (например),тогда
¬E(k) = ¬E(j(1))*....*¬E(j(s)) покажем,что
        ¬E(k) + E(m) = 1
Имеем
¬E(k)=¬E(j(1)*....*¬E(j(s)
E(m) = E(j(1)) + ... + E(j(s)) + E(rest)
Последовательно подавляем все множители в конъюнкции
¬E(k)+E(m)=¬E(j(1))*....*¬E(j(s)) + E(j(1)) + ... + E(j(s)) + E(rest) = 1

Достаточность
Если есть хоть один единичный бит "к" (c номером "р"), не входящий в единичные биты "m",то k&2^p !=0  и в тоже время номера единичных битов "m" не содержат "р",тогда 2^p с единицей на месте "р" в двоичном представлении 1000...0 (считая от 0 справа налево) будет умножаться на 0 в р-ой позиции "m",то есть m&2^p=0
В этом случае  k&2^p !=0 то есть Е(к,2^p)=1 если при этом
m&2^p =0 тогда Е(m,2^p)=0
В этом случае  Е(к,2^p) => Е(m,2^p) =0 то есть условие теоремы не выполнено для всех "x"

Заметим (¬A=>¬B ) = (A+¬B) = (B => A) и (¬A+A*B) = (¬A+B)

 Рассмотрим классический пример задачи ЕГЭ №18 на побитную конъюнкцию



Запишем в терминах алгебры {E(k)}
      E(49)=> (¬E(33)=> E(A))  ≡ 1
Разложим Е(49) и Е(33) по базисным предикатам
     Е(49) = Е(32) + Е(16) + Е(1)
     Е(33) = Е(32) +Е(1)
По Де Моргану :-
    ¬Е(49) = ¬Е(32)*¬Е(16)*¬Е(1)
Избавимся от импликаций в исходном уравнении
и получим
  ¬Е(32)*¬Е(16)*¬Е(1) + Е(32) +Е(1) +Е(А) ≡ 1
Подавим ¬Е(32) и ¬Е(1) в конъюнкции (помня,что ¬X*Y+X = Y+X)
   ¬Е(16) + Е(33) + Е(А) ≡ 1
и конвертируем обратно в импликацию
   (Е(16)=>E(A)) + (E(16)=>E(33)) ≡ 1
Допустим, что  Е(16)=>E(A) ≡ 1

Применяя Теорему 1,положим A(min) = 16 
  33=100001
  16=010000  
Возьмем любое А < A(min) тогда в четвертом бите
это А имеет 0 положим х(А) = 10000
  16&x(A) =  1
  A&x(A)  =  0
  33&x(A) = 0
Таким образом рассматриваемый предикат ложен
при значении аргумента х(А) :-
(Е(16)=>E(A)) + (E(16)=>E(33))(х(А)) = 0
Дествительно, уменьшить А(min)=16 не удается

Перейдем к более сложным примерам
  


(E(A)*¬E(12) => ¬E(A)*E(21)) + ¬E(21)*¬E(12) ≡ 1
¬E(A) + E(12) + ¬E(A)*E(21) +  ¬E(21)*¬E(12) ≡ 1

Применяем принцип поглощения
¬E(A) + E(12) + ¬E(21)*¬E(12) ≡ 1


и подавляем ¬E(12) в конъюнкции
¬E(A) + E(12) + ¬E(21) ≡ 1
¬(¬E(12)) + ¬E(A) + ¬E(21) ≡ 1


Используем дистрибутивность импликации
по отношению к дизъюнкции
¬E(12) => ¬E(A) + ¬E(21) ≡ 1
(¬E(12) => ¬E(A)) + (¬E(12) => ¬E(21)) ≡ 1


Согласно замечанию получаем
(E(A) => E(12)) + (E(21) => E(12)) ≡ 1


21=10101 (binary)
12=1100 (binary)

По Теореме 1
E(21) => E(12) ! ≡ 1
Таким образом нам необходимо, чтобы
E(A) => E(12) ≡ 1
По Теореме 1 окончательно имеем :-
А(мах) = 12



((E(13) + E(A)) => E(13) + E(A)*¬E(39) ≡ 1
¬E(13)*¬E(A) + E(13) + E(A)*¬E(39) ≡ 1

Подавляем E(А) в конъюнкции
¬E(A) + E(13) + E(A)*¬E(39) ≡ 1
¬E(A) + E(13) + ¬E(39) ≡ 1

Используем дистрибутивность импликации
по отношению к дизъюнкции
¬(¬E(13)) + ¬E(A) + ¬E(39) ≡ 1
¬E(13) => ¬E(A) + ¬E(39) ≡ 1

Согласно замечанию
(¬E(13) => ¬E(A)) + (¬E(13) => ¬E(39)) ≡ 1
(E(A) => E(13)) + (E(39) => E(13)) ≡ 1

По Теореме 1
E(39) => E(13) !
≡ 1
Таким образом нам необходимо, чтобы 
E(A) => E(13) ≡ 1
По Теореме 1 окончательно имеем :-
А(мах) = 13

***************
Теорема 2
***************
Полученное выше А(мах) увеличить невозможно
не потеряв тождественной истинности  
(E(A)=>E(T)) + (E(P)=>E(T)) 1
где смысл Т и Р ясен из контекста выше. 

Доказательство
Определим  $(C)  как множество единичных бит в С ∈ N , идущих
строго в порядке убывании разрядов  {j(1),j(2),....,j(k)}

Рассмотрим тождество (E(A)=>E(T)) + (E(P)=>E(T)) = 1
раносильное исходному уравнению

Пусть А(mах) = Т и А > A(max)

Существует единица из $(A) не входящая в $(A(max))
Определим х(А) имеющим нули в всех позициях $(A(max))
и единицу в позиции единицы в $(A),не входящей в
$(A(max))

P также как и А должно иметь единицу не входящую в $(A(max))
В х(А) поставим единицу на той же позиции, что и единица из Р,
не входящая в $(A(max))

Тогда
 T&x(A) = 0
 A&x(A) = 1
 P&x(A) = 1

Получаем
 E(A,x(A)) = 1
 E(T,x(A)) = 0  
 E(P,x(A)) = 1

E(A,x(A)) => E(T,x(A)) = 0
E(P,x(A)) => E(T,x(A)) = 0
Предикат (E(A)=>E(T)) + (E(P)=>E(T)) = 0
при х = х(А)


Рассмотрим Пример 7
из http://kpolyakov.spb.ru/download/bitwise2.pdf


Можно сформулировать и так :-
Найти максимальное А, чтобы предикат
    (¬E(46) + ¬E(18)) => (E(115) => ¬E(A))
был тождественно истинным



Определим  $(C)  как множество единичных бит в С ∈ N , идущих
строго в порядке убывании разрядов  {j(1),j(2),....,j(k)}
(¬E(46) + ¬E(18)) => (E(115) => ¬E(A)) ≡ 1
(¬E(46) + ¬E(18)) => (¬E(115) + ¬E(A)) ≡ 1
E(46)*E(18) + ¬E(115) + ¬E(A) ≡ 1


Поскольку импликация дистрибутивна как по отношению к дизъюнкции так и конъюнкции

(E(A) => E(46)*E(18)) + (E(A) => ¬E(115)) ≡ 1
(E(A) => E(46))*(E(A) => E(18))  + (E(A) => ¬E(115)) ≡ 1

Найдем А(мах) такое ,что
(E(A) => E(46))*(E(A) => E(18)) ≡ 1

По Теореме 1
$(A) ⊂ $(46&18) = $(2)
46 = 101110
&
18 = 010010
=============
2 =  000010

Откуда А(мах) = 2
Рассмотрим любое А > 2
Тогда А имеет единичный бит вне $(46) либо вне $(18)
в числе х(А) поставим на это место 1, а остальные 

заполняем нулями, что повлечет
(E(A,х(А)) => E(46,х(А))*(E(A,х(А)) => E(18,х(А)) = 0  ;
Далее нужно, чтобы х(А) ∈ Е(115)
115 = 1110011

                                                 6543210
В 0-ой из единичных разрядов 1110011 ставим 1, 

а остальные заполняем нулями тогда
(E(A,х(А)) => ¬E(115,x(A)) = 0

Таким образом, действительно А(мах) = 2


************************
Второе решение
************************
(¬E(46) + ¬E(18))=> (E(115)=> ¬(E(A)) = 1
E(46)*E(18) + ¬E(115) + ¬E(A) = 1
E(46) =E(44) + E(2)
E(18) =E(16) + E(2)
E(46)*E(18) = E(44)*E(16) + E(44)*E(2) + E(2)*E(16) + E(2)
E(46)*E(18) = E(44)*E(16) + E(2)
E(44)*E(16) + E(2) + ¬E(A) = 1
(E(A)=>E(2)) + (E(A)=>E(44))*(E(A)=>E(16)) = 1
(E(A)=>E(2)) + (E(A)=>E(44&16)) =1


44=101100
&
16=010000
=======
0 =000000


(E(A)=>E(2)) + (E(A)=>E(0)) =1
(E(A)=>E(2))  =1

Откуда A(max) = 2




(E(28)+E(45)) => (¬E(48)=> E(A)) ≡ 1
¬E(28)*¬E(45) + E(48) + E(A) = 1
¬E(32)¬E(16)*¬E(8)*¬E(4)*¬E(1) + E(32) + E(16) + E(A)  ≡ 1

Подавляем два первых множителя конъюнкции
 ¬E(8)*¬E(4)*¬E(1) + E(32) + E(16) + E(A)  ≡ 1
¬E(13) + E(48) + E(A) ≡ 1
(E(13)=> E(A)) + (E(13) => E(48)) ≡ 1
(E(13)=> E(A)) ≡ 1


Положим А(min) = 13
Возьмем любое A < A(min)
48=110000
13=001101
Тогда в одном из разрядов содержащих  1 в 1101
А будет иметь 0. В числе х(А) на это место ставим 1
(либо 0-ой либо 2-ой либо 3-ий разряды)  остальные 
разряды в х(А) нулевые.
13&x(A)  = 1
А&x(A)   = 0
48&x(A) = 0
Откуда
(E(13,x(A)=> E(A,x(A)) + (E(13,x(A)=> E(48,x(A)) =0
Действительно,  A(min) =13

Saturday, February 9, 2019

Алгебра предикатов в контексте подхода к задаче № 18 ЕГЭ Информатика (once again)

Подход к  решению задачи Р02 отличается от стандартов, исходящих из оригинальной работы http://kpolyakov.spb.ru/download/inf-2015-10.pdf , а именно, мы используем Предикатную логику 1-го порядка. Смотри https://ru.wikipedia.org/wiki/Логика_первого_порядка

Рассмотрим задачу Р02 из файла ege18.doc


Сформулируем ее следующим образом

**************
Задача 01
**************
Определим следующие одноместные предикаты
Определим предикаты
Р(x) = { 1; x ∈ [10;15];
             0; x !∈ [10;15]
           }
Q(x) = { 1; x ∈ [5;20] ;
            0; x !∈ [5;20]
           }
S(x) = { 1; x ∈  [15;25] ;
            0; x !∈ [15;25]
           }
Символ "R" в условии  заменим на  "S". "R" - означает как всегда
множество всех вещественных чисел.
Найти наименьшую область истинности предиката А(х) такого,что
∀ x∈R :  (A(x)vP(x))⊕(¬Q(x)vS(x)) = 1

************************
Решение задачи 01
************************

Область истинности предиката Х в дальнейшем
будем обозначать $(X)
Поскольку
∀ x∈R :  (A(x)vP(x))⊕(¬Q(x)vS(x)) = 1
       то $(AvP)∩$(¬QvS) = ∅
 в противном случае

∃ y∈ $(AvP)∩$(¬QvS) : (A(y)vP(y))⊕(¬Q(y)vS(y)) = 0
так как (A(y)vP(y))=1 и (¬Q(y)vS(y))=1

c другой стороны $(AvP)∪$(¬QvS) = R
в противном случае
∃ y∈ R\($(AvP)∪$(¬QvS)) :  (A(y)vP(y))⊕(¬Q(y)vS(y)) = 0
так как (A(y)vP(y))=0 и (¬Q(y)vS(y))=0

Таким образом мы получаем :-
$(AvP)∩$(¬QvS) = ∅
$(AvP)∪$(¬QvS) = R

Следовательно,
    $(AvP) = R\$(¬QvS)

Поскольку
   ∀ x∈$(P)∪$(Q) : P(x)vQ(x) = 1
   ∀ z ∈R\($(P)∪$(Q)) : P(z)vQ(z) =0

то $(¬QvS) = (-∞;5]∪[15;+∞),откуда

    $(AvP) = [5;15]

Следовательно, минимальная область истинности предиката А
    $(A)= [5;15]\[10;15] = [5;10]


Ответ на задачу Р02 соответственно будет (3)
 

Monday, February 4, 2019

Алгебра предикатов и классические задачи ЕГЭ Информатика № 18 с XOR и "~"

Задачи, разобранные ниже, взяты из Новостной Ленты ВК последних недель, но подход к их решению принципиально отличается от стандартов исходящих из оригинальной работы
 http://kpolyakov.spb.ru/download/inf-2015-10.pdf
а именно, мы используем Предикатную логику 1-го порядка. Смотри

По сути все клоны классической задачи 18 иcпользуют

Утверждение 01
********************************************************************
Пусть P и Q два одноместных предиката, определенных
На множестеве Х любой природы.
Если ∀ x ∈ Х : P(x) => Q(x) = True (*),то область истинности
предиката $(P) вложена в область истинности предиката $(Q)

*****************************************************************************
Допустим  ∃ y : (P(y)=1)^(Q(y) = 0 ) =1. Тогда P(y) => Q(y) = False
Что противоречит условию (*) и $(P) вложено в $(Q)
Отсюда также следует , что максимальная область истинности P ($(P)) есть область истинности Q ($(Q)), поскольку при Q(z)=1, мы можем не теряя общности считать P(z)=1, а минимальная область истинности Q ($(Q)) есть область истинности P ($(P)).
 
Определение А(мах) или А(мин) просто зависит от порядка
предикатов в импликации. Если А справа, то опреляется
минимальная область истинности, если слева то максимальная


Определим предикаты
Р(x) =  { 1; x ∈ [15;28] ;
              0; x !∈ [15;28]
            }
Q(x) = { 1; x ∈  [5;9] ;
              0; x !∈ [5;9]
           }

Определите максимальную область истинности  предиката А(х) такого,что

∀ x∈R :  A(x) => (P(x) ~ ¬Q(x)) = 1
∀ x∈R :  ¬A(x) v (P(x)⊕Q(x)) = 1
   Откуда следует вложение $(P⊕Q) в  $(A)
∀ x∈R :  A(x) => (P(x)⊕Q(x)) = 1 (*)


Область истинности  P(x)⊕Q(x)  есть $(P⊕Q)
Тогда $(P⊕Q) =  [15;28]\[5;9]∪[5;9]\[15;28]=[5;9]∪[15,28]
Допустим

∃ y∈R : (A(y)=1)^(P(y)⊕Q(y) = 0 ) = 1
Тогда
∃ y∈R : A(y) => P(y)⊕Q(y)  = 0

мы получаем противоречие с (*) , то есть $(A) вложено в $(P⊕Q)
Следовательно максимальная область истинности А(х)
есть область истинности  P(x)⊕Q(x) то есть  $(P⊕Q)
Максимальная длина связной компоненты [5;9]∪[15,28]
есть 28-15 = 13 

  
Определим предикаты
Р(x) =  { 1; x ∈ [11;21] ;
              0; x !∈ [11;21]
            }
Q(x) = { 1; x ∈  [15;40] ;
              0; x !∈ [15;40]
           }


Определите максимальную область истинности  предиката А(х) такого,что

∀ x∈R :  A(x) =>¬ (P(x)~Q(x)) = 1
∀ x∈R :  ¬A(x) v (P(x)Q(x)) = 1
 Откуда следует вложение $(P⊕Q) в  $(A)
∀ x∈R :  A(x) => (P(x)⊕Q(x)) = 1 (*)

Область истинности  P(x)⊕Q(x)  есть $(P⊕Q)
Тогда $(P⊕Q) =  [11;21]\[15;40]∪[15;40]\[11;21]=[11;15]∪[21,40]
Допустим

∃ y∈R : (A(y)=1)^(P(y)⊕Q(y) = 0 ) = 1
Тогда
∃ y∈R : A(y) => P(y)⊕Q(y)  = 0

мы получаем противоречие с (*) ,то есть $(A) вложено в $(P⊕Q)
Следовательно максимальная область истинности А(х)
есть область истинности  P(x)⊕Q(x) то есть  $(P⊕Q)

Максимальная длина связной компоненты [11;15]∪[21,40]
есть 40 - 21 =19

*****************************************************************************
Пример решение той же задачи по http://labs.org.ru/ege-18-practice/
*****************************************************************************


Официальное решение


Теперь сформулируем эту же задачу следуя 

Определите предикаты P(x) и Q(x), А(х) как одноместные
предикаты , то есть отображения вещественной оси во
множество {0,1} или {True,False} следующим образом

Р(x) =  { 1; x ∈ [11;21] ;
              0; x !∈ [11;21]
            }
Q(x) = { 1; x ∈  [1540] ;
             0; x !∈ [15;40]
           }

и найдите максимальный связный экстент в  области истинности  предиката А(х),как некоторого подмножества R  такого,что

∀ x∈R :  A(x) =>¬ (P(x)~Q(x)) = 1
 что равносильно
∀ x∈R :  A(x) => (P(x)⊕Q(x)) = 1  (*)

************
Решение
************
Обозначим область истинности  P(x)⊕Q(x)  через $(P⊕Q) 
    ∀ x∈R :  A(x) =>¬ (P(x)~Q(x))  = 1
    ∀ x∈R : ¬ A(x) v (P(x)Q(x))   = 1  
          Откуда следует вложение $(P⊕Q) в  $(A)  
Заметим,что $(P⊕Q) =  [11;21]\[15;40]∪[15;40]\[11;21]=[11;15]∪[21,40]
Допустим
    ∃ y∈R : (A(y)=1)^(P(y)⊕Q(y) = 0 ) = 1
Тогда
    ∃ y∈R : A(y) => P(y)⊕Q(y)  = 0
мы получаем противоречие с (*)

Следовательно, максимальная область истинности А(х)
есть область истинности  P(x)⊕Q(x) то есть  $(P⊕Q)
Максимальная длина связной компоненты [11;15]∪[21,40]
 есть 40 - 21 =19 


Рассмотрим задачу Р02 из файла ege18.doc


Сформулируем ее следующим образом

**************
Задача 01
**************
Символ "R" в условии  заменим на  "S". "R" - означает как всегда
множество всех вещественных чисел.
Определим следующие одноместные предикаты
Определим предикаты
Р(x) = { 1; x ∈ [10;15];
             0; x !∈ [10;15]
           }
Q(x) = { 1; x ∈ [5;20] ;
            0; x !∈ [5;20]
           }
S(x) = { 1; x ∈  [15;25] ;
            0; x !∈ [15;25]
           }
Найти наименьшую область истинности предиката А(х) такого,что
∀ x∈R :  (A(x)vP(x))⊕(¬Q(x)vS(x)) = 1

************************
Решение задачи 01
************************

Область истинности предиката Х в дальнейшем
будем обозначать $(X)
Поскольку
∀ x∈R :  (A(x)vP(x))⊕(¬Q(x)vS(x)) = 1
       то $(AvP)∩$(¬QvS) = ∅
 в противном случае

∃ y∈ $(AvP)∩$(¬QvS) : (A(y)vP(y))⊕(¬Q(y)vS(y)) = 0
так как (A(y)vP(y))=1 и (¬Q(y)vS(y))=1

c другой стороны $(AvP)∪$(¬QvS) = R
в противном случае
∃ y∈ R\($(AvP)∪$(¬QvS)) :  (A(y)vP(y))⊕(¬Q(y)vS(y)) = 0
так как (A(y)vP(y))=0 и (¬Q(y)vS(y))=0

Таким образом мы получаем :-
$(AvP)∩$(¬QvS) = ∅
$(AvP)∪$(¬QvS) = R

Следовательно,
    $(AvP) = R\$(¬QvS)

Поскольку
   ∀ x∈$(P)∪$(Q) : P(x)vQ(x) = 1
   ∀ z ∈R\($(P)∪$(Q)) : P(z)vQ(z) =0

то $(¬QvS) = (-∞;5]∪[15;+∞),откуда

    $(AvP) = [5;15]

Следовательно, минимальная область истинности предиката А
    $(A)= [5;15]\[10;15] = [5;10]


Ответ на задачу Р02 соответственно будет (3)

Краткое пояснение