A hashing problem



Here is a hashing related problem that relates to an application I
have.
I have a set of entities E; in my case the ascii character set*.

For each entity in E, I assign a hash value that such that no two
entities in E
have the same hash value.
Each hash value is independant of the entity to which it is assigned.
Easy enough so far. (I just used the first 128 (256) elements of a
congruential random number generator.)

Now I need to store sets of entities from E into a hash table.
For eash set of entities S I construct a hash value for S by taking
the exclusive or
of the hash values of the elements of S.
Now if all the sets I store into the hash table have cardinality 1 then

the hash values used in the hash table
are guaranteed to be distinct which makes the hashing more efficient.
It is this efficientcy that I am after.

I would like to choose my hash values such that if all the sets I store
in the hash
table are of size at most k, for some preferably large value of k,
then all sets stored in
the hash table have distinct hash values. My approach to solving this
problem
so far is to use the congruential random number generator to generate
hash values and
to use exaustive search.

But I am wondering if there is any theory that can help.

Any suggestions?

Any references to closely related problems?

I would consider it pretty good if I could find a solution for this
problem with |E| = 128
and k = 5 or 6.

Thanks

Ralph Boland


*I also have to deal with an extended ascii set of 256 characters.

.