1. A method to construct a symmetry tree of a Boolean function, comprising: (a) setting an initial set of the trees T&equals;&lcub;D 1,..., D n &rcub; and functions, wherein D i is a tree which includes a node marked by variable x 1 (i&equals;1,..., n), and proceeding to step (b); (b) applying a procedure to construct a 1-symmetric part to the set T and the function ƒ, wherein T′&equals;&lcub;D′ 1,..., D′ k &rcub; is the result of the applied procedure, and proceeding to step (c); (c) determining whether T′&equals;1, wherein &verbar;T′&verbar; is the cardinality of the set T′, and if T′&equals;1, then the tree D′ 1 is returned, otherwise, proceeding to step (d); (d) determining whether T′>1, if T′>1, then m is set equal to 2, and proceeding to step (e); (e) determining whether m>T′/2, and if so, constructing treeN(T′) utilizing an N-union operation and returning the tree as the result of the operation, otherwise proceeding to step (f); (f) determining whether m T′/2, and if so, applying a procedure to construct an m-symmetric part to the set T′ and the function ƒ, wherein T″ is the result of the procedure, and proceeding to step (g); and (g) determining whether T′&equals;T″, and if so, m is set equal to m&plus;1 and the method returns to step (f), if T′ T″, then T is set equal to T″ and the method returns to step (b).