Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Pondering ("think on opponent's time")

Author: Sune Fischer

Date: 12:59:40 11/11/02

Go up one level in this thread


On November 11, 2002 at 13:04:37, Uri Blass wrote:

>On November 11, 2002 at 12:10:55, Andreas Stabel wrote:
>
>>On November 11, 2002 at 12:04:03, Uri Blass wrote:
>>
>>>On November 11, 2002 at 10:28:33, Robert Hyatt wrote:
>>>
>>>>On November 11, 2002 at 01:10:23, Uri Blass wrote:
>>>>
>>>>>On November 10, 2002 at 23:53:19, Robert Hyatt wrote:
>>>>>
>>>>>>On November 10, 2002 at 22:38:03, Jeremiah Penery wrote:
>>>>>>
>>>>>>>On November 10, 2002 at 21:29:43, Robert Hyatt wrote:
>>>>>>>
>>>>>>>>On November 10, 2002 at 21:15:07, Jim Bumgardner wrote:
>>>>>>>>
>>>>>>>>>Which of these strategies for "think on opponent's time" makes more sense?
>>>>>>>>>
>>>>>>>>>A) To only search the top-move from the principle variation.  If
>>>>>>>>>the opponent makes that move, continue searching, otherwise reset and
>>>>>>>>>search again.
>>>>>>>>
>>>>>>>>This is the _only_ way to do it.  I've explained this many times, but it
>>>>>>>>is probably time to go it again...
>>>>>>>
>>>>>>>For the general case.  But it shouldn't be hard to find situations where it's
>>>>>>>very easy to tell the ponder move is probably wrong.  In those cases, it's
>>>>>>>obvious, IMO, that switching to a different ponder move would help.
>>>>>>>
>>>>>>>One possible scenario is when the ponder move keeps failing high - either the
>>>>>>>ponder move is wrong, or you ponder some other move and you'll find the
>>>>>>>fail-highs again anyway if they play the original ponder move.  Otherwise,
>>>>>>>you'll have a better chance of pondering on a better move.  You could always
>>>>>>>save the result of the first ponder search just in case.
>>>>>>
>>>>>>
>>>>>>That is a good point of course.  If you get the fail high _before_ using the
>>>>>>"target time" then you can safely switch to pondering something else, knowing
>>>>>>you will have time to find the "fail high" again, if the opponent makes the
>>>>>>expected move.
>>>>>>
>>>>>>The bad side might be that you don't fail high until you are beyond your target
>>>>>>time, so that if you start pondering something else, you might not be able to
>>>>>>find the fail high for real if the opponent actually makes that move...
>>>>>
>>>>>You assume here that you are going to forget the fail high.
>>>>>
>>>>>You can rememeber the move that you want to play against the expected move in
>>>>>case of fail high and continue to search other moves and when the opponent plays
>>>>>the expected move you can play the move that you remember in 0 seconds.
>>>>
>>>>Yes, although I am trying to adhere to the KISS principle here.  The above
>>>>would work well, but it would introduce additional complexity and the
>>>>opportunity for bugs.  But it might be worth it too...
>>>>
>>>>>
>>>>>I also believe that the best strategy is not to ponder only on one move but to
>>>>>have a lot of threads(for every legal move of the opponent a different thread)
>>>>>and to give different priority for different moves.
>>>>
>>>>How about some math to show how the above is going to be better than pondering
>>>>one move that is correct over 50% of the time.  I don't see any way to improve
>>>>except in special cases such as a terrible fail-high that lets you know your
>>>>opponent probably won't play that move...
>>>
>>>I admit that there is not a big improvement but if you want some math then here
>>>is is:
>>>
>>>What is better?
>>>
>>>Case A:You ponder the expected move 60% of the cases and ponder another move in
>>>40% of the cases
>>>
>>>case B:In the same 60% of the cases you use 90% of the time for the expected
>>>move.
>>>In the rest of the 40% of the cases you use 30% of the time for the move that is
>>>going to be played.
>>>
>>>0.6*0.9+0.4*0.3=0.66>0.6
>>>
>>>
>>>Uri
>>
>>The math here is wrong - it should be:
>>0.6*0.9 + 0.4*0.1*0.3 = 0.54 + 0.012 = 0.0552
>
>The math is correct
>You cannot change my calculation and decide that my math is wrong.
>
>I think that you assume that I assume that the program always use 90% of the
>time for the move that it expects.
>
>I did not say it.
>
>There are 2 kind of moves:
>
>Moves type A:Moves that the program has the move that is going to be played in
>the pv.
>Moves type B:Moves that the program does not have the move in the pv.
>
>I assume that moves type A are 60% of the moves.
>
>I said that it is possible that the program use in average 90% of the time for
>the played move in moves type A and 30% of the time for the played move in moves
>type B.
>
>The point is that moves type A are not random moves and most of them are forced
>positionally or tactically so the program can see after a short search that one
>move is better than the other moves so it is using 90% of the time for the
>expected move.
>
>The moves type B are not forced moves and in most cases there are 2 or 3 moves
>that have the same score or almost the same score so the program can use 30% of
>it's time for every one of these moves.
>
>Uri

I think you are both wrong :)
But I'm not sure you are trying to calculate here, shouldn't it be the expected
ponder success rate?
Looks like you are calculating 0.6*0.9+0.4*0.3=0.66>0.6, or:
 frequency of type A times percentage of search time + ....

Whatever that is, it isn't the same.

Bob's example was that in more than 50% of the cases the second move in the PV
would be a correct guess, hence a ponder success rate of more than 50% (or
0.50).
This was only type A moves, ie we assume there is always a move to ponder.

We could get the full success rate if we apply a ponder scheme to type B moves
also, but I think the question was only about the optimal strategy if there is a
move in the PV, otherwise it isn't so clear what to do.

-S.



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.