Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Any tips for implementing SEE?

Author: Robert Hyatt

Date: 12:00:17 10/01/01

Go up one level in this thread


On October 01, 2001 at 14:46:27, Steve Maughan wrote:

>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.

I do.  And it is probably important in most cases, as you suspect.


>
>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 catch all such things, but in an easy fashion.  I have a single bitmap
that gives _all_ direct attacks to the target, irregardless of whether the
piece is black or white.  When a piece is "used" I remove it, then look behind
it (down the rank/file/diagonal going away from the target square through the
square occupied by the piece just "used" to see if I find the right kind of
piece behind that one (IE down a diagonal if the next piece is a bishop or
queen of either color then attacks bitmap is updated.)  I later notice this
is a piece of color "x" when I use the attacks bitmap to find the smallest
piece of "side" that is attacking the destination.

Not very hard, certainly not very computationally expensive...



>
>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.