Author: Heiner Marxen
Date: 17:48:54 12/31/01
Go up one level in this thread
On December 31, 2001 at 15:19:22, leonid wrote:
>On December 31, 2001 at 10:58:46, Heiner Marxen wrote:
>
>>On December 31, 2001 at 07:44:24, leonid wrote:
>>
>>>Hi, Heiner!
>>>
>>>
>>>>>What is "immediate mate move"?
>>>>
>>>>If the defender is to move, and the current depth is at least 3 (mate-in-2
>>>>or more left after defender move), and the defender has more than just his bare
>>>>king, then, before even generating the legal defender moves, Chest calls
>>>>the special mate-move-generator, trying to find a "mate the attacker in 1".
>>>>The moves found by that move generator are just candidates, and must be
>>>>executed to verify them, but there are not many false candidates.
>>>
>>>This is probably what I expected to write but never come to my code. Recently I
>>>put all kind of counters in plys three. What is interesting to see there is that
>>>biggest part of all positions for this ply have checking moves. So, if this side
>>>use its checking move and have certain number of legal moves for his king, it
>>>have good chances to escape mate after response. All work should be in finding
>>>how many initially legal king's moves are needed. Also it is important to see if
>>>each if its moves do not diminish number of already existing king's escape
>>>moves.
>>
>>With "ply three", do you mean the defender is to move as part of the mate-in-2,
>>with the attacker asked to solve a mate-in-1 after this move?
>
>Yes!
>
>
>>If so, then yes: most of these moves are checking moves, and almost all of
>>them are quite successful. In Chest I have a special handling for this.
>>The main thought (from the perspective of the defender) is:
>>- After the move I will select now, he (the attacker) is trying to mate me.
>> I will keep him busy by checking him, so he has to defend to the check,
>> instead of checking me.
>
>Exact! And since in my program all checking moves are already at the head of the
>chain, I should use some data that it already there.
>
>>- Ok, I could check him with this piece from there. Now, could he defend
>> against that check and at the same time check me?
>> Well... if his king moves out of check... could be a discovered check
>> to me, at most... but from there, where his king is leaving to there,
>> where my king still is, there is no geometric connection... no discovered
>> check.
>
>This is very close to what I expect to see but, like in the past, I will do it
>in parts. First I will see how many times king can escape the mate when its side
>(I speak about 3 ply) give check to whites. Only after this I will look into
>second part, when on ply 3 blacks have no moves to check but black king have
>around 5 moves or more. This possibility is very much present in position that
>you brought today.
Lets look at statistics from Chest:
mvx 9: 50 79 [ 50.000 1.580] mvskip lvskip
mvx 8: 528 542 [ 6.684 1.027]
mvx 7: 4621 4409 [ 8.526 0.954] 8
mvx 6: 34852 30307 [ 7.905 0.870] 112 1
mvx 5: 196096 177735 [ 6.470 0.906] 11985 19
mvx 4: 1172529 1037151 [ 6.597 0.885] 24179 64
mvx 3: 8138955 7049843 [ 7.847 0.866]
mvx 2: 13256189 7032443 [ 1.880 0.531]
mvx 1: 1314511 0 [ 0.187 ]
The small black EBF 0.531 (ply 3) is due to FAC:
fac : 10923553 calls, 10810677 scans, 5650313 ck, 4680226 success (42.8%)
fact : 4074088 calls, 3660805 candidates, 2332632 success (57.3%)
fackm: 6372715 calls, 4736464 inchk, 4092589 scans, 5295446 dirs
3621958 used [0.57]
And the comparatively small EBF one ply higher (1.880) is due to "mate2",
which does not try to check the attacker, but to escape with the king:
mate2: 6372715, 71787466 cand [11.3], 13256189 mvx [18.5%]
m2e: avg 5.25, cnt = 6064322
The defending king has 5.25 flight squares on average (including the king's
square). That is a lot. Delivering mate is not easy, then.
(This statistic is done _before_ the attackers move at ply 4)
Yes, if you do not yet do something like that, there is still a lot of
potential. But it is not easy to do the necessary calculations quick enough.
>>More cases and details are tested, until one finds, that the defender by
>>checking the attacker in a certain way, already avoids any mate in the next
>>move. In Chest I estimate that by verifying that the attacker cannot even
>>follow up with a checking move. I call that "fatal anti check", FAC.
>>This is a very successful heuristic.
>
>
>>Well, I learned "heuristic" as a technical term in computer science.
>
>Before I read a lot about programming but it was only Assembler related books.
>Nothing about chess. I don't remember "heuristic" word on all my reading.
>
>After your previous message I went to search in "Oxford American Dictionary" for
>1979 "heuristic". Wanted to "refresh my mind". Dictionary is around 50000 words
>but this word is missing.
My "Advanced Learner's Oxford" from 1974 contains:
heuristic: adj, of the theory in education that a learner should discover
things for himself.
heuristics: n, method of solving problems by inductive reasoning, by
evaluating past experience and moving by trial and error to a solution.
May be you should not ask a German to explain English words ;-)
>>>>Holger was interested to do research and experiments on this, and tried
>>>>to work on the tree size estimation idea. He spent 2 weeks of his vacations
>>>>on this, and came back with an extended version of Chest, which now solved
>>>>that mate-in-9 much, much faster. Actually, it was the first time that
>>>>we did solve that position (took 32.5 hours on a HP9000-835 in 1991).
>
>At the time when my first mate solver version was done, in around 1995, this
>position could easily take months to solve.
>
>>>If this man was able to do everything in two weeks, he was stronger that me.
>>
>>Not "everything", just the extension :-)
>>Also, trying out ideas is _much_ faster in C than in assembler.
>>That is the main reason for me to not use assembler, any more.
>
>When you write only for fun, Assembler could be the most amusing thing to use. I
>like its freedom.
Sure. I like that too. In fact, around 1980 I did write my chess problem
solver in assembler (for an IBM/370). Yes, it was a lot of fun, but then
I realized how difficult (time consuming) it was to test new ideas, and
therefore permanently switched to C. That was much better to experiment with.
Debugging time reduced, also.
No, I will not do assembler, again. Not for Chest, at least.
>>>I was coming all two weeks with some kind of new ideas and biggest part of them
>>>never worked.
>>
>>I forgot to mention: we also introduced options for all three authors,
>>so that every author can trigger his own extensions without disturbing the
>>research of the others. Anyway, it is a good idea to make extensions
>>conditional, so one can play with and without them, until the case is settled,
>>at which time a default is chosen.
>>
>>>>So I took his code, cleaned it up somewhat, added some comments, and
>>>>asked him about all those peculiar details in there, which I did not
>>>>understand. Most often he could not explain much more than "I tried
>>>>several things, and this worked best... don't know why".
>>>
>>>So, he, probably, did like me after statistics.
>
>Cheers,
>Leonid.
Cheers,
Heiner
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.