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.