[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: computer-go: How many bits are needed to encode an N x N Go position?
No need to aplogize.
I am not aware if 5x5 has been solved or not, but I will say that it's
probably possible, certainly not easy, with todays memory and
hardware. We are talking about a perfect solution.
It's one of those problems that people start thinking about just about
when the computing power makes it feasible to dream about solving.
Even though the search space is huge (huge is a term that is redefined
every couple of years) retrograde analysis makes it within the realm
of possibility.
The numbers have been posted, about 3^25 with further reductions based
on exploiting sysmetries. This is about about 200 billion positions
depending on how you count and what reduction tricks you use. This is
already doable it terms of disk memory although it's more than most of
us have. Most businesses have this much and more though and anyone
can buy this amount of space without breaking the bank if they want to
solve the problem.
Someone posted about storing 1 bit per position. If the goal is to
prove some assertion (such as first player always wins or first player
wins by 3 stones etc.) then even 1 bit is not quite enough. You still
need another bit for workspace (it is necessary to flag positions that
have been visited or scored.) But the final table could be one bit
per position and that would give us a tidy reduction if all you needed
was 1 bit of information about each position.
Retrograd analaysis consists of "working backwards." You start with
all possible go positions, find all the legal ones that can be scored
as game complete and keep the results in this table. Then you do a
second pass, finding the remaining positions that can be scored with a
1 ply search leading to any of the already scored positions. You keep
doing this until you have seen all positions in the table. This is
much faster than starting from the beginning of the game and doing one
giant search. After 50 passes of this algorithm, you will have a
table of all positions. Once you had this table, you would have a go
program that played perfectly from ANY position with a simple 1 ply
search.
There are probably some issues with Ko that would require a little
forethought. Technically, a position consists of more than just the
exact board configuration and side to move because the game context is
somewhat game history dependent.
I also suspsect that on a fast PC with 200 gigs of disk space, the
analysis program might take many weeks to run, but it could be
checkpointed and done gradually. Early versions of the table would
still be very useful for solving endgames.
Don
Content-Disposition: inline
Content-Type: text/plain; charset="iso-8859-1"
Date: Wed, 16 Oct 2002 11:21:43 UT
From: "Andrew Derrick Balsa" <andrebalsa@xxxxxxxxxxxxxxxxx>
X-Epoch: 1034767308
X-Sasl-enc: RiXqDGWPGMBPsJcOP+kJbg
Sender: owner-computer-go@xxxxxxxxxxxxxxxxx
Precedence: bulk
Reply-To: computer-go@xxxxxxxxxxxxxxxxx
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