Author: Antonio Dieguez
Date: 12:03:09 10/20/02
Go up one level in this thread
Here is a more clear formulation, imho! :)
int qsearch(int lower, int upper)
{
// we are pessimistic: our best score is the enemy threat
make(null-move);
best= -captsearch(-upper, -lower);
unmake(null-move);
// no need to score better than the upper bound:
if (best>=upper)
return best;
// improve our best score by searching moves:
for each capture/fork/checking/tipicalqsearch move m do {
make(m);
value= -qsearch(-upper, -best);
unmake(m);
if (value>best) {
if (value>=upper)
return value;
best= value;
};
};
// we are bad anyway
if (eval()<=best)
{ return best }
// little optimization
if (eval<upper)
{ upper=eval }
// see if score will go low or not.
for each aditional move m do {
make(m);
value= -qsearch(-upper, -best);
unmake(m);
if (value>best) {
if (value>=upper)
return value;
best= value;
};
};
return best;
}
with the same capturesearch as before.
seeyou.
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.