[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: computer-go: Huima's hash function
Very enlightening, Antoine - thank you. For the sake of correctness of
this nice proof, a few typos I noted:
> - let p1 = r(r(p))
p0
> - let p2 = m(r(p))
p0
> H(B1) = Hb(p2)*Hb(p1) = (z0*z2).(z3*z1).(z2*z0).(z1*z3)
p3
> H(B+B1) = H(B)*H(B1) = H(B+B1)
B0
Now the next question is, is this defect an inevitable consequence of
enforcing the symmetry relations? The answer is, fortunately, no: here
is a construction that avoids it, at the cost of doubling the number
of chunks from 8 to 16: again considering only the left-hand side, let
p0 = z0.z1.z2.z3.z4.z5.z6.z7...
r(p0) = z2.z3.z4.z5.z6.z7.z0.z1...
m(p0) = z7.z6.z5.z4.z3.z2.z1.z0...
This obeys the necessary invariances, namely r^4 = m^2 = I (identity).
But now:
H(B0) = (z0*z4).(z1*z5).(z2*z6).(z3*z7)...
H(B1) = (z1*z5).(z0*z4).(z7*z3).(z6*z2)...
are no longer equal. Open questions for discussion:
- can we prove this 16-chunk scheme to be correct?
- could the problem be fixed using less than 16 chunks?
Incidentally, doubling the chunks does not necessarily mean we have to
increase the length of the hash - how about using 16 4-bit chunks? We
can still require all chunks in the value for a generic (non-symmetric)
board position to be different: there are 16! permutations of the integers
from 0 to 15, of which we can use 1/16th (accounting for board symmetries).
Should still be plenty, no?
Best,
- Nici.
--
Dr. Nicol N. Schraudolph http://www.inf.ethz.ch/~schraudo/
Institute of Computational Science mobile: +41-76-585-3877
ETH Zentrum, HRS H5 (Hirschengraben 84) office: -1-632-7942
CH-8092 Zuerich, Switzerland fax: -1374