On Thu, 2007-02-08 at 15:55 -0500, Don Dailey wrote:

> The children of one parent almost certainly will have different 64 bit 
> keys than the children of the other parent.  

Not if the parents collide.
(apart from symmetry/canonical considerations):
if H(A)==H(B),
then after applying move 'm'

-->> H(A) ^ some_constant == H(B) ^ some_constant

So if you use Zobrist[move] as a some_constant value
(which I understand you do),
then if both parent moves A,B have a successor move (coordinate+color)
in common,
the resulting hashes for the successors will also collide.

> I don't see how you can conclude that I'm not getting much extra 
> safety.
> 
> By the way, I use zobrist hashing with XOR to generate these keys and 
> do all the rotations - choosing the smallest key of the 8 possible 
> tranforms as the "cannonical" key.   In most cases 8 positions will

IIRC, choosing the smallest may cause some unwanted effects. Not sure...

> hash to this same key but the positions are symetrically equivalent.

You mean: _after the canonisation_ they hash to the same key.


> 
> You could of course look at it backwards,  what are the odds that
> 2 child keys will match?  If you can find 2 that do match,  what are

For two children of the same parent, this is (given an adequate Zobrist
table) impossible. After canonisation, this is unclear (but can be
guaranteed by careful construction of the Zobrist tables).


> the odds that their parents will also have a matching key?   I 
> think this is very unlikely.

I think this is just as likely as the other way around,
since the ^ is its own inverse function.

HTH,
AvK


_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to