Sorry for posting then,  I didn't realize that it had been tried.  I may
work through the problem and try to get it to work in order to fully
understand why it in fact does not work.  If by some miracle I manage to get
something working with a collision rate of 1/(2^61) I'll certainly post it.
Thanks for the info.

- Nick

On 2/9/07, Erik van der Werf <[EMAIL PROTECTED]> wrote:

Nick,

The basic idea of what you're describing is well known. It was first
published by Antti Huima several years ago. Unfortunately though, his
implementation was flawed. I didn't check your code but likely it
suffers from a similar defect. It is possible to fix the defects in
Huima's scheme. If you ignore colour symmetry it's relatively easy to
find a defect-free xor-based scheme that works with 8 segments. The
more interesting part is in finding the minimal number of segments,
and then proving correctness.

Nic Schraudolph has done some interesting work on this, but as far as
I know he still hasn't published it. Maybe if we all sit on him we can
finally get him to finish it :-)

Erik


On 2/9/07, Nick Apperson <[EMAIL PROTECTED]> wrote:
> Hey all,
>
>     I was thinking about our conversation and i decided to design a
zobrist
> class that allows for easy comparison to check and see if 2 different
> zobrist values are equivalent after a rotation etc...  It updates the
> zobrist in such a way that it can transform them and after trying 8
> possiblilities, it can determine if they are equal.  There are actually
> quite a few optimizations that could be performed on it, but I just
wanted
> to post the basic idea.   See the following source code for the basic
idea:
>
>  http://www.nicholasapperson.com/computergo/zobrist.h
>
>  Essentially it works so that it hashes the played stone as each of the
> rotated forms and stores that in each of the 8 bytes used.  The bytes
are
> arranged in an order such that flipping the 2 DWORDs results in the
zobrist
> value for if there was a rotation in the x axis, flipping WORDs results
in a
> reflection across the y axis and swapping bytes results in a reflection
> across the y=x line.  Order obviously matters in the case of xy so the
> transformation is assumed to take place after the other
reflections.  For
> example:
>
>  if we have 0x1234567890ABCDEF as a zobrist value,
>
>  0x90ABCDEF12345678 would be the zobrist of the position with a
reflection
> across the x-axis
>
>
>  Anyway, I'm sure there is a bug or two, but I wanted to get your alls
> thoughts.
>
>  - Nick
> _______________________________________________
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/
>
_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

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

Reply via email to