Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Should I test for hash move legality?

Author: leonid

Date: 06:37:18 12/30/00

Go up one level in this thread


On December 29, 2000 at 07:57:23, Andrew Dados wrote:

>On December 29, 2000 at 06:52:51, Steve Maughan wrote:
>
>>Currently in my program I generate all of the moves then loop through looking
>>for the hash move, giving it a 'high' move order score went found.  This works
>>well and is simple to implement.  It would be (much) better to not generate all
>>of the other maoves and simply take the hash move and play it first, generating
>>all the other moves if a cutoff is not forthcoming.
>>
>>This give rise to a problem - how can I be sure that the hash move is legal?
>>
>>It could be the case that I have a hash collision - yes I use a 64 bit key but
>>it's still possible - and no doubt it would happen in the final round of the
>>World Championships just as I was about to slaughter Shredder 8 (;-)) yes in my
>>dreams I know!!).
>>
>>I guess I have a series of options:
>>
>>1) Ignore the possibility and realise that I'll never get to the last round of
>>the WMCCC.
>>2) Perform a full legal move check (expensive!)
>>3) Check that the piece to move is on the expected square
>>4) Do (3) and check that the destination square is reasonable for the piece to
>>move but don't bother about checking for sliding peices being blocked.
>>
>>At the moment I'm favouring (4) as this could be accomplished with a simple
>>lookup table.
>>
>>What do others do?  Any advice appreciated!
>>
>>Regards,
>>
>>Steve Maughan
>>
>>PS I use a x88 structure.
>
>Think about e.p and castling moves from hashtable... besides for me somehow
>'full legality check' is not that expensive.
>
>-Andrew-

It is interesting to see that one more programmer say that "full legality check"
is not that expensive. Generally it is not what I read here.

In my program for all plys (with one exception that make 50% of all moves)
program find all the legal moves for entire ply. After statistics, I found that
other way is more time consuming in my program. During the last verification it
was around 30%. It was found for my mate solver. This mate solver probably was
the most efficent ever done, even with all the legal moves that it used. The
most important is to have good move order for moves chain.

After my "bad statistic" (not in mate solver) during the brute force search in
average program produce 5 moves for finding its needed one. Only better move
order, after my personal expectation, could change this bad statistic into
something less humiliating. My numbers don't include hash table.

Better move order for me is the chain where checking moves goes first, material
gain just after. For checking moves first existe only one exception in my
program.

Leonid.



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.