I'm searching for good hash-function for N-dimensional vector of M-bit integer numbers with a property that any permutation of the coordinates gives the same result.
e.g. $ h(x,y,z) = h(x,z,y) = h(y,x,z) = h(y,z,x) = h(z,x,y) = h(z,y,x) $
by good hash-function I mean following:
- good avalanche properties - There is minimum correlation between values of arguments and values of resulting hash. To avoid mapping of similar arguments to the same hash.
- good statistical properties - results are uniformly distributed. ( to minimize statistical probability of collision = mapping different arguments to the same hash )
- fast to compute on computer - i.e. use just operation like bitwise and, or, xor, not, bit-shift, aritmetical addition, subtraction, multiplication, maybe modulo
NOTE 1
I certainly do not require perfect hash function (which is bijective; without any collisions ) since I want to use it for dimensionality reduction. The resulting hash should has less bits than the original vector.
NOTE 2
hash function like
$h(x,y,z)= x + y + z$
$h(x,y,z)= x\ \mathrm{XOR} \ y\ \mathrm{XOR}\ z$
has permutation symmetry, but does not have very good statistical properties and avalanche properties. They have too much correlation between arguments and results, therefore for some sets of arguments gives too much collisions.