Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: how do I determine 'mate in' depth?

Author: Sune Fischer

Date: 01:46:56 09/11/02

Go up one level in this thread


On September 11, 2002 at 00:01:16, scott farrell wrote:

>On September 10, 2002 at 02:56:01, Sune Fischer wrote:
>
>>On September 09, 2002 at 20:01:29, scott farrell wrote:
>>
>>
>>>I have tried a variation on that, being :  INFINITY+(100-ply) - so it stays over
>>>infinity, so if it finds mate it returns nice a quickly. I guess your way
>>>continues to look for a shorter mate.
>>>
>>>But I still get the same sympton, the first move in the mate sequence returns
>>>INFINITY+99 (ie. INFINITY+100-1).
>>>
>>>I guess is something to do with wierd hashing, or my replacement scheme or
>>>something. i hope its not another bug in the hashtable.
>>
>>You never ever want to go higher than INFINITY, the signs are important here.
>>
>>Use INFINITY-ply (why add 100?)
>>So that INFINITY-1 is mate in 1 ply
>>INFINITY-2 mate in 2 plies (1 move) and in general INFINITY-x mate in x plies.
>>
>>This works well for the a-b algorithm, your opponent will choose the move with
>>the highest score as always, so he will pick the move INFINITY-4 rather than
>>INFINITY-7, always the shortes way to the mate (you never mate if you take the
>>longest (instability)).
>
>I dont see the big advantage of picking a shorter mate - mate is mate - I win -
>thanks for coming - (or more often, oops I lose) - maybe I can loose slower
>though.

Well, programs are a little different in this respect.
If you reverse the scores it will consistently pick the longest way to the mate.
That way you are _sure_ never to checkmate.

>I just liked when I returned over mate, the search function exited nice and
>quickly, if i do INFINITY-ply, wont it continue looking really hard? isnt there
>chance the time control will stop the current play from searching? (what do
>normal programs do when the ply doesnt finish anyway?)

I'm not sure I understand the problem.
You can stop doing iterative deepening if the search returns a mate score, or
you can let it go on and try to find a shorter mate.
Don't kill your search just because it finds one mate in one branch, use the
mate score like any other score and let the algorithm do its job.

You should note there is an important difference between INFINITY-ply and
INFINITY+ply. If you use INFINITY+ply you are telling your program to search for
the _longest_ mate all the time (because those numbers are higher). You need to
let the shorter mate have a higher score so the algorithm will prefer those
(that is why you _subtract_ the distance, distance is *bad*).

I'm sorry, I can't explain it any better.
You have to understand the algorithm you work with to understand how it handles
the scores.

-S.



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.