[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: computer-go: [Question] Alpha-Beta Pruning & Null Move
I don't really understand. The whole idea of Alpha-beta pruning is to
look at a tiny fraction of the leaf nodes. You can use this saving,
which will be a factor of thousands or millions, to spend a thousand
or million times more time on the much fewer leaf nodes you visit.
Alpha beta can also save the actual time of evaluating a single node.
This is accomplished by knowing how much each evaluation term
contributes to the whole and only calculating terms that have some
hope of making a difference.
Forget about null move for a second. What you want is an algorithm
that knows how to accurately estimate a lower bound on the score. If
you can do that a lot cheaper than the search you would have to do to
ascertain this, then you can treat this estimator as a reliable bound
and get "beta" cutoffs you couldn't normally get with alpha/beta.
That's what null move is. Just a kind of estimator. It doesn't give
you a score, just a bound in one direction.
Go is the kind of game where the value of being on the move is almost
always better than NOT being on the move. Therefore, null move would
probably work well as an estimator. However, it's still far from
clear that null move makes any sense for Go, except perhaps in a local
setting like string tactics. Null move is horizon weak and that is
likely to kill the idea for Go. Even in Chess, null move is less
effective in end games, which more resemble the game of Go than
middlegames do because of the greater potential for very long term
threats. Null move is a risk and does not guarantee the same result
as full width searching, it is just known to be extremely cost
effective in the tradeoff. In Go it may not work.
It's pretty difficult to look more than a couple of moves deep in Go,
even with null move and alpha/beta pruning. Most of the effort has to
be in understanding where the search effort should be spent and this
is very closely tied with knowing which position is better than
another. Go programs are not very good at figuring this out.
Most of the work I'm doing in Go is to identify with as much certainty
as possible, which moves cannot be best. I'm not trying to identify
good moves, except by this process of elimination. I haven't got
around to actually looking at null move pruning in Go, but it's one
possibility in this direction.
I don't view null move as a threat detector, although it can be
formulated that way or perform that function. It's more accurate to
say it identifies the places you can stop searching because the
opponent did something stupid. So you can use null move as a pruning
device, or as a threat detector.
Don
From: "Xu, Mousheng (SEA)" <Mousheng.Xu@xxxxxxxxxxxxxxxxx>
Date: Thu, 12 Apr 2001 09:35:07 -0700
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2653.19)
Sender: owner-computer-go@xxxxxxxxxxxxxxxxx
Precedence: bulk
Reply-To: computer-go@xxxxxxxxxxxxxxxxx
Content-Type: text/plain;
charset="iso-8859-1"
Content-Length: 1325
Dear all,
I just don't see how alpha-beta pruning can save mentionable calculation.
The most time consuming part is to evaluate the leaf nodes. With alpha-beta
pruning, you still have to calculate every leaf node. I agree that
Alpha-beta pruning can reduce tree size, which then can save some memory.
But does it save calculation?
Null moves not only applies to "pass"es, but also applies to local
calculation. If you are focusing calculation around some local area, you may
want to evaluate the cases when either you or your opponent chooses to play
somewhere else. I cannot find any good references on the Web about null
moves. Does any one here has a pointer?
Thanks a lot.
-- Mousheng Xu
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