Computer Chess Club Archives


Search

Terms

Messages

Subject: Any tips for implementing SEE?

Author: Steve Maughan

Date: 11:46:27 10/01/01


I've been tinkering with my engine again and delved into the move ordering.
Currently I use pseudo SEE to order i.e. if no defenders then
value=captured_piece_value otherwise assume that value=captured_piece_value -
attacking_piece_value.  Quite simple and quick.

Now I am wanting to implement SEE.  I've already done this in a program I wrote
a couple of years ago.  That implementation performed a normal search where the
only moves played were those that captured on the specific square.  This was
slow - although not horrendous.  I was thinking about trying to implement
something a little faster.  Leen Ameraal posted a simple routine that utilied a
table of attackers and defenders.  Once this table is filled the actual
evaluation is relatively quick.  I'm quite sure that this would be faster than
my original implementation.  However it is clearly not a simple task to fill
these tables.

Here's a test position. Assume that White must evaluate the score of a) bxc6 and
then b) Rxe2

[d]6k1/1p6/2n5/1P6/B7/4p3/1R1rp2R/K7 w - - 0 1

To evaluate bxc6 correctly one needs to see that the Bishop has a valid xray
attack.  Does everyone bother with this type of situation?  I would imagine that
this is quite important so I would guess that they do.

The second position is a little more subtle.  To see that Rxe2 wins a pawn one
must also see that after Black recaptures on e2, white is then, and only then,
able to recapture on e2.  This is a little more subtle as it's the Black piece
(i.e. opponents piece) that blocks the recapture.  This would be (more)
difficult to catch in a SEE routine.  How many programs would evaluate this
correctly?

I suspect most do 'a' but not 'b'.

All help appreciated!

Steve Maughan



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.