singular moves

Discussion of chess software programming and technical issues.

Moderator: Ras

bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: singular moves

Post by bob »

jwes wrote:
bob wrote:
Daniel Shawul wrote:Quote from you
I don't see they could behave otherwise, once you think about it a bit. You just have to ignore the "depth" number since the two will be off by one ply the one that reduces everything but checks will search one ply deeper in the same time required by the one that extends only checks to reach depth N-1.
You said the difference between the two programs is one ply which is completely wrong. We (I count three) tried to point out to you the difference in nominal depth is more than that.You completely forgot the recursive part there. I think this issue is done and dusted, unless you still insist on that the difference in nominal
depth between program A and B is still 1.


Moving on, right from the beginning when I asked the question ,I was talking about the case where we have a singular move, and whether to decide to extend the singular move Or reduce the non-singular moves.If there is no singular move at a node , no reductions or extensions are done. It doesn't make sense to reduce the non-relevant part of the tree. So lets discuss this case in particular.
Please re-read. I did not say "one ply always". For the example I gave, where we were just searching one ply, the difference would be one ply. But I clearly said, several times, that the depths will be different, not different by just 1 ply, but the trees will be identical, given identical amounts of search time.

Then you are talking about 3 classes of moves, as I originaly mentioned. Some you reduce, some you extend, and some you do nothing about. As an equivalent alternative, you could reduce some by 2 plies, some by 1 plies, and some not at all, and achieve the _same_ result. That's been my point. Extensions and reductions are opposites that achieve the same results if applied in the opposite way.

For SE, you could extend singular moves, or reduce everything else. If you are already reducing many moves, reduce the ones you normally reduce by 2 plies, reduce all that is left (except a singular move) by 1 ply, and don't reduce the singular move at all. Same result in the same amount of time.
If what you mean is:

depth += {-1,0,1}(depending on reductions/extensions)
value = search(tree, alpha, beta, depth-1);

is the same as:

depth += {0,1,2}(depending on reductions/extensions)
value = search(tree, alpha, beta, depth-2);

then it is trivially true. If you mean something else, then you will have difficulty having the same tree. I think most of the posters had something else in mind.
You have to remember the qualifier. "same tree" at the point where the search ends for both after a fixed (and equal) amount of time. There is an issue in what one does at the horizon that is minimal in its effect, but the basic idea is that you search one group of moves to a shallow depth, another group to a less shallow depth, and the final group (checks) to an even less shallow depth. Which is the effect I am getting today with -1, 0 and +1. I still search some moves to a very shallow depth (depth -2), some to a less shallow depth (depth -1), and others to the same depth (checks, depth - 0, since I extend by +1 and always use depth-1 on the recursive call, which turns into plain "depth"...
Daniel Shawul
Posts: 4186
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: singular moves

Post by Daniel Shawul »

Thanks Gerd for the nice explanation with diagrams. The two cases that I was talking about give different trees ofcourse, as can be seen in the diagram. That was the reason why I suggested to try reducing the non-singular moves at the same node where a singular move exists (Call it Option 2). That tree looks very much like LMR.

Option 2's tree (third diagram) looks to me a better one because it is less aggressive, while achieving the same result of preferring the singular move over the others. The first two diagrams (Option 1) search the non-relevant part of the tree (i.e those without singular moves) to a much reduced depth (One ply short in the case shown on the diagrams). The less aggressive nature of the scheme I suggested could also avoid tree explosions caused by excessive application of singular extensions , which can be easily occur with a lower singular margin say 20 cP.