Hagamos ingeniería inversa: En el caso de n=2 hay 2(2n)=24=16 funciones distintas: F0...F15 . A continuación se muestra la tabla verdadero-falso resultante. Cada columna representa el resultado de la función F0...F15
F0(0,0)=0
F0(0,1)=0 ....
F15(1,1)=1
A B| F0 F1 F2 F3 F4 F5 F6 F7
0 0| 0 0 0 0 0 0 0 0
0 1| 0 0 0 0 1 1 1 1
1 0| 0 0 1 1 0 0 1 1
1 1| 0 1 0 1 0 1 0 1
A B| F8 F9 F10 F11 F12 F13 F14 F15
0 0| 1 1 1 1 1 1 1 1
0 1| 0 0 0 0 1 1 1 1
1 0| 0 0 1 1 0 0 1 1
1 1| 0 1 0 1 0 1 0 1
Para comprobar por qué hay 16 funciones distintas, empezamos con nuestra primera función F0 que asigna cualquier par (A,B) a FALSE . Para la siguiente función F1 basta con diferir en una sola posición para ser distinto de F0 =>F1(A=1,B=1)=1 . Lo mismo ocurre con F2 con respecto a F1 etc. Finalmente llegamos a F15 que se distingue de F14 simplemente asignando todas las entradas a TRUE.
Hagamos también cuentas:
¿De cuántas formas distintas se pueden elegir k elementos de un conjunto de n elementos con repetición ( k=2 n=2 ) ? nk = 22=4 . Hay 4 maneras de formar una pareja (A,B) de ahí F(A,B) también produce 4 resultados k1,k2,k3,k4 . ¿De cuántas formas distintas se pueden elegir k elementos de un conjunto de n elementos con repetición ( k=4 n=2 ) ? nk = 24=(2(22))=16 . Por tanto, 16 funciones booleanas semánticamente diferentes.
Véanse a continuación los nombres de las funciones y los símbolos correspondientes. (Fuente: http://mathworld.wolfram.com/BooleanFunction.html )
function symbol name
F0 0 FALSE
F1 A ^ B AND
F2 A ^ !B A AND NOT B
F3 A A
F4 !A ^ B NOT A AND B
F5 B B
F6 A xor B XOR
F7 A v B OR
F8 A nor B NOR
F9 A XNOR B XNOR
F10 !B NOT B
F11 A v !B A OR NOT B
F12 !A NOT A
F13 !A v B NOT A OR B
F14 A nand B NAND
F15 1 TRUE