2.5.1. БУЛЕВСКИЙ ДИФФЕРЕНЦИАЛ



d/dXi F(X1,...,Xi,...Xn) = F(X1,...,X{i-1},0,X{i+1},..,Xn) (+)
                           F(X1,...,X{i-1},1,X{i+1},..,Xn)

Дифференциал показывает насколько изменится значение функции если мы изменим
одну конкретную переменную в этой функции.

Пример:

	d/dX1 AND(x1, x2) = AND(0, X2) (+) AND (1, X2) =
			  =       0    (+)      X2     =
			  =       X2


  таким образом если мы изменим X1 то значение функции измениться на X2
  т.е. если X2 = 1, то значение функции изменится при изменении X1,
    a  если X2 = 0, то значение функции не изменится при изменении x1.



Нормальная форма для XOR: F(X1,X2,..Xn) = F(0,0,...,0) * (1(+)X1)*...*(1(+)Xn) (+) F(1,0,...,0) * X1 * (1(+)X1)*...*(1(+)Xn) (+) ... F(1,1,...,1) * X1 * X2 * ... Xn Напишем нормальную XOR форму для AND: AND(x1,x2) = AND(0,0) * (1(+)x1)*(1(+)x2) (+) AND(1,0) * X1 *(1(+)x2) (+) AND(0,1) * (1(+)X2)* x2 (+) AND(1,1) * X1 * x2 = 0 * X1# * x2# (+) 0 * X1 * x2# (+) 0 * X2# * x2 (+) 1 * X1 * x2 = 0 (+) 0 (+) 0 (+) 1 * X1 * X2 = X1 * X2 OR(X1, X2) = OR(0,0) * (1(+)x1)*(1(+)X2) (+) OR(1,0) * X1 *(1(+)X2) (+) OR(0,1) * (1(+)X1)* X2 (+) OR(1,1) * X1 * X2 = 0 * X1# * X2# (+) = 1 * X1 * X2# (+) = 1 * X1# * X2 (+) = 1 * X1 * X2 = 0 (+) X1#*X2# (+) X1*X2# (+) X1*X2 = X1#*X2# (+) X1*X2# (+) X1*X2 -------------------------------------------------------- args | XORтермы | | F(0,0)* | F(1,0)* | F(0,1)* | F(1,1)* | |(1(+)x1)*| x1* |(1(+)x1)*| x1* | (+) x2 x1 |(1(+)x2) |(1(+)X2) | x2 | x2 | Result -------+---------+---------+---------+---------+-------- 0 0 | (0) 0 0 0 | 0 0 1 | (0) 1 0 0 | 1 1 0 | (0) 0 1 0 | 1 1 1 | (0) 0 0 1 | 1 ------------------------------------------------------- Очень похоже на коньюнктивную форму (собственно это она и есть), потому что тоже минтермы, (для каждого входного набора есть только один минтерм который на данном наборе равен 1, все остальнве равны 0), а случаях 0(+)0 и 0(+)1 - все равно что использовать: XOR или OR


Index Prev Next