Pentru intrările A,B,C (şi ieşirile O1,O2,O3) soluţia este
Invert(A,B,C,O1,O2,O3)
X = non((A˄B)˅(A˄C)˅(B˄C));
Y = non(((A˅B˅C)˄X)˅( A˄B˄C));
O1 = ((B˅C˅Y)˄X)˅(B˄C˄Y);
O2 = ((A˅C˅Y)˄X)˅(A˄C˄Y);
O3 = ((A˅B˅Y)˄X)˅(A˄B˄Y).
Am separat cele două operaţii de complentare, folosind variabilele logice temporare X şi Y.
Se verifică uşor prin calcul că O1=non(A), O2=non(B), O3=non(C).
Notaţia este poate mai inteligibilă dacă o scriem într-o algebră Boole (unde disjuncţia şi conjuncţia se notează cu + respectiv concatenare, iar complementarea cu ‘):
X = (AB+AC+BC)’
Y =((A+B+C)X+ABC)’
O1 =(B+C+Y)X+BCY;
O2 =(A+C+Y)X+ACY;
O3 =(A+B+Y)X+ABY.
Operând cu reguile de algebră şi cu De Morgan ( (a+b)’=a’b’, (ab)’=a’+b’) vom avea
X=A’B’+A’C’+B’C’+A’B’C’
Y= A’B’C’+A’B’C+AB’C+ABC’
Înlocuind şi făcând reducerile, se obţine uşor O1=A’, O2=B’, O3=C’.
Pentru cazul general, orice circuit Boolean cu N complementari poate fi înlocuit cu unul care are numai două complementari.
Pur şi simplu se grupează arbitrar trei operatori de complementare cu intrările I1,I2,I3 şi se aplică Invert(I1,I2,I3,O1,O2,O3), care reduce numărul total de complementări la N-1; procedeul se aplică apoi de N-2 ori.
Am primit o singură soluţie corectă: de la Aurel Ionescu.