[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

computer-go: How many bits are needed to encode an N x N Go position?



Hi,

I apologize for changing the subject, but in fact this is a follow-up
question 
to my previous one about the computability of 5 x 5 perfect play, from a 
slightly different angle.

In all the answers that were provided, I did not see any mention of a 
theoretical obstacle. The main obstacle seems to be a practical one: the
size 
of the search space.

This brings me to my present question:

What is the minimum number of bits needed to encode a 5 x 5 Go position?
And 
generalizing, how many bits are needed to encode an N x N position?

I would like to propose an answer. I am not sure it is correct (i.e. I am 
almost sure it is incorrect!) and I would welcome the insights of others. 
Let's add up the bits:

First there is a term for the number of vertices, i.e. N x N. Since each 
vertex can be empty, black or white, we also need to multiply N * N by a 
constant, I believe this is log(3)/log(2). Am I correct here? As
mentioned by 
Weimin, there are the usual symmetries that reduce this search space, so
we 
deduct three bits (that is two bits for spacial symmetries and one bit
for 
the player color, am I correct?).

We also need to encode who is to play (1 bit), and whether there is an
active 
ko (1 bit) and its position (log2(NxN) bits). Again, am I correct here?
As 
you can see, I have more doubts than answers.

I do not believe there is any need to encode the scoring rules, so no
bits are  
needed for that. And I have thought about whether there is a need to
encode 
the number of captured stones by each side. I have reached the conclusion 
that this is not needed, because it does not really affect how a perfect 
player would play. I believe the perfect player will always play the same 
best move in a given position, independent of how many stones each side
has 
captured. Once again, I may be wrong.

So we have an upper bound of, for a 5 x 5 board:

((log(3) / log (2) ) * 25) - 3 + 2 + log2(25) = (rounding up) 44 bits

And how many bits do we need to encode the perfect move itself ? I
believe 
that would be 1 bit for pass or play, plus log2(N x N) for the move
itself. 
For a 5 x 5 board, that is 6 bits (rounding up).

The problem still seems within the practical limits of computability,
IMHO.
-- 
Andrew D. Balsa
andrebalsa@xxxxxxxxxxxxxxxxx

-- 
http://fastmail.fm/ - Consolidate POP email and Hotmail in one place