[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?



Yes, it is that complicated.  The  subject is how many bits are needed
to encode  an N x N  Go position.  You  are suggesting a way  that has
a few more bits than needed.

> Maybe I am missing something.

There are 2 issues you are  not addressing.  One is that rotations and
reflections of the  board can save a few  bits of representation.  The
other is that many positions  are illegal.  It's wasteful to represent
those positions.

Jean-Pierre correctly  observed that trying  to map out  those illegal
positions  is tricky.   Building a  mapping  table is  easy, but  more
expensive than just using the unmapped representation!  Another way is
computationally  expensive.    Compute  the  index  on   the  fly,  by
enumerating  and   testing  the  whole  space.   This   of  course  is
ridiculously expensive,  but tells  you how to  compute the  bit space
needed.  Simply walk every configuration and count the number of legal
positions.  You also need to account for all rotations and reflections
(no point in counting positions multiple times.)

I hope  I've convinced you that  it is more complicated  than it might
seem at first.

Just for  fun, there is another possible  complication.  It's possible
that some  LEGAL positions cannot  be reached in  a real game  from an
empty board.  I don't really know, but if that is the case, someone on
this list  may be able  to construct an  example of a  legal positions
that cannot be reached in a real game.

My conclusion is  that the minimal number of  bits needed to represent
all  positions accurately  in  N x  N go  may  be fewer  than what  is
practical.

Don


P.S.  If someone  could come  up with  a  practical  way to  "map out"
      illegal positions, then  it might also be possible  to throw out
      huge classes of  positions that are legal, but  can be proved to
      be irrelevant (for instance, easy  to "prove" it's a big win for
      one  side or the  other.)  I'm  skeptical, but  it's an  idea to
      think about.




   X-Originating-IP: [149.2.141.4]
   From: "Mousheng Xu" <moushengxu@xxxxxxxxxxxxxxxxx>
   Date: Thu, 17 Oct 2002 09:47:44 -0700
   Content-Type: text/plain; format=flowed
   X-OriginalArrivalTime: 17 Oct 2002 16:47:44.0910 (UTC) FILETIME=[EAAB52E0:01C275FC]
   Sender: owner-computer-go@xxxxxxxxxxxxxxxxx
   Precedence: bulk
   Reply-To: computer-go@xxxxxxxxxxxxxxxxx

   Is it that complicated? 1 position on board is either b, or w, or empty or 
   ko -- 4 different values, 2 bits. 5 x 5 = 25 positions, x 2 bits = 50 bits.

   Maybe I am missing something.

   -- m.x.
   >From: Jean-Pierre Vesinet <jpvesinet@xxxxxxxxxxxxxxxxx>
   >Reply-To: computer-go@xxxxxxxxxxxxxxxxx
   >To: "'computer-go@xxxxxxxxxxxxxxxxx'" <computer-go@xxxxxxxxxxxxxxxxx>
   >Subject: RE: computer-go: How many bits are needed to encode an N x N Go 
   >position?
   >Date: Thu, 17 Oct 2002 16:10:29 +0200
   >
   >It is difficult to further diminish in practice ceil(log2(3^(N*N))) bits (=
   >40 for N=5).
   >- Eliminating illegal positions gets you another factor 2 for N=5 (only 49%
   >of the 3^25 positions are legal).
   >- Taking into account symmetry / rotations / color reversal to avoid
   >computing several times game values that you already have does divide 
   >almost
   >by 16 the useful state space with komi 0 (some positions are already
   >symmetric).
   >
   >But there is no simple function to map between this reduced number and the
   >actual board state.
   >
   >We also need 1 bit for the next player and ceil(log2(N*N)) (=5 for N=5) for
   >a ko-forbidden point (basic ko rule).
   >
   >Regards,
   >
   >Jean-Pierre Vesinet


   _________________________________________________________________
   Get faster connections -- switch to MSN Internet Access! 
   http://resourcecenter.msn.com/access/plans/default.asp