Author: Dan Homan
Date: 04:19:19 11/06/99
Go up one level in this thread
On November 05, 1999 at 17:11:08, Dann Corbit wrote:
>On November 05, 1999 at 16:18:47, Dan Homan wrote:
>
>>I missed an obvious simplification in my verification search. Here
>>is the output of my program with Null Move - ON + verification search.
>>At large depths the speed here is much faster than the previous post
>>due to the simplification I found.
>>
>> - Dan
>>
>>P.S. Does anyone have any other good null-move killer positions to
>>suggest?
>
>Don't know for sure if these are all null moves. I ran a script that filtered
>for the word combination "null move" and also contained epd positions. So these
>are probably null move problems. I will run another one looking for Zugzwang.
>Your new code seems to do very well. Would you be willing to show me exactly
>what you did?
Ok, your standard null-move code looks something like this....
search(position current, int alpha, int beta, int depth) {
.....
position next;
int score;
/* null move */
if( /* conditions to decide if null-move is appropriate */ ) {
next = makeNull(current);
if(depth >= R+1) {
score = -search(next, -beta, -beta+1, depth-R-1);
} else {
score = -Qsearch(next, -beta, -beta+1);
}
if(score >= beta) return(beta);
}
.....
}
I simply modified the null move code to look like
/* null move */
if( /* conditions to decide if null-move is appropriate */ ) {
next = makeNull(current);
if(depth >= R+1) {
score = -search(next, -beta, -beta+1, depth-R-1);
} else {
score = -Qsearch(next, -beta, -beta+1);
}
/* verification search */
if(score >= beta && depth >= R+1) {
next = current;
set flag for no null move on next search;
score = search(next, beta-1, beta, depth-R-1);
}
if(score >= beta) return(beta);
}
You can see that the verification search is just 3 or 4 lines of code.
All it does is search the current position to a reduced depth with
no null move.... this only happens when the null move is going to force
a fail high, and it should confirm that we are not in zug. The time spent
doing these verification searches is very small, so I think this might
be a good addition. I still have to do tests on those positions you
posted.
- Dan
>
>2k1q3/2p3n1/p1Np4/3P3p/P2P1p2/1Q5P/1KP5/8 w - -
>2k2b1r/1p1b1p2/p2p1Pr1/q1p1p2N/P1P1Q3/1P3N2/2P2PPP/3RR1K1 w - - bm Nxe5;
>2r1r1k1/3p1p1p/p2Qp1p1/q1N2P2/Pn1B1P2/6P1/2P3bP/2KRR3 b - -
>2r2rk1/1bpR1p2/1pq1pQp1/p3P2p/P1PR3P/5N2/2P2PPK/8 w - -
>3Q4/kp4pp/p3qr2/8/P1N1p3/1P1nP2P/2R3P1/6K1 w - - bm a5;
>6k1/1R6/6Pp/3rbp1P/1P3B2/5K2/8/8 b - -
>6k1/2n2p2/7p/4PPPP/2K1P3/8/8/8 w - -
>7k/4K2p/7P/3p4/8/4Q3/1q6/8 w - -
>8/2B5/8/6pp/7k/7P/6P1/4q1K1 w - -
>8/p7/P5p1/7p/7P/4kpK1/8/8 w - -
>bn6/1q4n1/1p1p1kp1/2pPp1pp/1PP1P1P1/3N1P1P/4B1K1/2Q2N2 w - -
>kbK5/1p6/pP6/8/8/8/R7/8 w - -
>kbK5/pp6/1P6/8/8/8/R7/8 w - -
>r3k2r/p2qnpb1/1pp3p1/3pP1Bp/3P2n1/Q1NB4/PP2RPPP/R5K1 w kq -
>r3r1k1/3b1p1p/2p4q/p2p4/3P2p1/1PNPPpP1/P1RQ1P1P/5RK1 w - -
>
>[snip]
This page took 0.01 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.