Author: leonid
Date: 11:47:47 12/31/01
Go up one level in this thread
Hi, Heiner! It is to this message that I am now writing for the 3 time. I hope that this one will work. >>By thinking about your remark about defender side, I found that I did one >>mistake. To be sure that this time I not lost next "small" nuance, I went >>actually back to my mate solver code to read it before speaking. There I found >>what I wanted to find and even why I was confused about "active" and "passive" >>moves. But before every thing else, exact mate solver move construction. >> >> >>Each move, composed from attacking and defending ply, contain identical sorting >>for both sides. The same move generator and two move sorting for two plys. Both >>sides try as hard as they can reach mate. >> >>In attacking side it is only move that lead to mate that is solved as the next >>"best move". > >I.e. you save a move that does solve this current position. Yes, "black side" save just one move after another and the last previous move saved in this way is "best move". It is best because it stopped "white side" from making mate with its white (offensive) move. White (offensive side) don't save each move but only move that lead to mate. >>On defending side it is move that lead to mate, or last move of search that is >>saved as "best move". >> >>Previous mistake from my side was in saying that it is only move that lead to >>mate that is saved for defending side. > >Again, you save that move, that "solves" this current position for the defender. >A defender "solves" a position if he avoids its own forced mate. >Correct? Exact! >Some (minor) questions remain: >- meaning of "active" and "passive" move: I suspect an "active" move is one > that checks the opposing king. Correct? >- Storing saved "best moves" for each ply: do you index from top (i.e. with > the depth you have searched into the tree, already), or do you index from > bottom (i.e. by the remaining depth to go/search)? Active move - move that give check to the enemy side, or contain material advantage. Inside of active moves, checking moves goes first. Sorting of moves, where active goes first and passive later, is done in both parts of my program (mate solver and chess playing part) but only in chess playing part each ply is devided between active and passive part. For each part of each ply (active and passive) two variables are saved (chess playing part). Reason for splitting chess playing ply in active and passive, but not in mate solver, is that mate solver is not material oriented logic. Devision in chess playing part between active and passive is done because of two reasons: 1) All active moves are the most promissing and goes first. Biggest part of them contain material advantage and deposition of those moves demand calculation of this advantage. For passive is already no need for calculating material gain. 2) Since passive moves goes only after active, it is very often even not needed service. Only when search will reach passive part then best passive move will be used. Then special sorting for passive moves will be done by using previously found "best passive". >Intuitively I would index by remaining depth, but the other way may make sense, >also. It is exactly like you say. Each "best move" represent globale variable that is used just for special ply, or depth. For instance, "best active for ply 8" will be something like "active8" but for ply 7, "active7" and so like. My counting of plys start with initial ply of search that bring biggest number. If search goes 10 plys deep, it start with ply 9 and goes down to ply zero. Cheers and I do wish that this time my computer will play no trick to me. Leonid.
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.