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.