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

Re: computer-go: RE: 2d vs 1d



>  Use a representation that closely matches the reality. The closer, the
>  better for thinking.

I  agree with everything you said  except  this, and I'll explain why.
If you disagree, that's no problem, but please let me express this:

First of all, reality isn't  just what we see   through our own  eyes.
The way  we phrase a  problem (our data  representation  and choice of
language) WILL affect how we think about a problem.  Stating a problem
in the most natural representation could be limiting.

Computers don't have  the ability to meet  us  half way.  But  we have
tremendous  flexibilty to adapt ourselves to  various ways of thinking
and in fact  humans excel at  this!  This opens  the door to  creative
thinking.

So what  I do is  try  to accomodate the   computer instead of  myself
whenever it's at  all reasonable.  I have  found this usually makes it
easier to implement ideas.


Don




   From: "Xu, Mousheng  (SEA)" <Mousheng.Xu@xxxxxxxxxxxxxxxxx>

   My 2 cents: 
   Use a representation that closely matches the reality. The closer, the
   better for thinking.

   The major difficulty for go programming is its number of unique board
   status. To overcome the number, you need speedy calculation. On the other
   hand, you want to significantly and effectively "reduce" the number by
   various algorithms. If everybody is using the same algorithms, then making
   your program faster or fastest is critical, and it makes sense to write
   machine code just to win the speed eventually.

   >From what I have read on the list, most go programmers are using the same or
   similar algorithms/approaches. It seems reasonable to focus on speed. But I
   for one think it might not be the right focus. For the same
   algorithms/approaches, the program could differ in ease of
   programming/debugging/expanding/thinking ... I personally am very willing to
   trade speed for easier software development. It seems much more hopeful to
   have a better algorithm than to have a faster speed to win the race.

   That's why I prefer 2D & Java. :)

   -- Mo 

   -----Original Message-----
   From: Don Dailey [mailto:drd@xxxxxxxxxxxxxxxxx]
   Sent: Thursday, May 17, 2001 7:04 AM
   To: computer-go@xxxxxxxxxxxxxxxxx
   Cc: computer-go@xxxxxxxxxxxxxxxxx
   Subject: Re: computer-go: Sharing Go modules



   That's not really true.    I don't think  my   program does a   single
   multiply operation to find a neighbor intersection.

   In principle you are  right, but there  are many tricks to avoid this.
   For instance the  8 neigbor points can  be a  simple table lookup,  or
   simple constant offsets in your program.

   However with  modern processors,  I'm not sure  2D arrays  are so bad,
   certainly not as bad as a few years  ago.  Also, compilers are good at
   avoiding a  direct  multiply instruction if  it's  faster.  However  I
   don't see that 2D arrays are any kind  of simplification, because that
   implies more complicated loop structures to "look around."

   Don




      Date: Wed, 16 May 2001 22:47:30 -0700

      A one dimensional array doesn't avoid the multiply. You are doing the
      multiply yourself to convert x,y to index. I think modern day optimized
      compiler is more efficient than calculating the address yourself.

      Man Lung Li


   The information contained in this email is intended for the
   personal and confidential use of the addressee only. It may
   also be privileged information. If you are not the intended
   recipient then you are hereby notified that you have received
   this document in error and that any review, distribution or
   copying of this document is strictly prohibited. If you have
   received  this communication in error, please notify Celltech
   Group immediately on:

   +44 (0)1753 534655, or email 'is@xxxxxxxxxxxxxxxxx'

   Celltech Group plc
   216 Bath Road, Slough, SL1 4EN, Berkshire, UK

   Registered Office as above. Registered in England No. 2159282