[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