Finally I've implemented a long time idea, concentric alpha-beta. The principle is simple, but to implement it I had to overcome a lot of practical problems. It seems to work very fine now, despite one crash every 4 or 5 games, but this could be corrected by a better implementation.
I thought a while about that, and I won't release Protej 058 sources, but I'm going to public the algorithm: I think that this can be a good contribute to the community.
This is the last gauntlet, 1+1 time and G6 positions:
well, I have a better one, and I give it for free. There is a paper on solving a game of five-in-line (like noughts and crosses, only one needs a longer line) by the means of threat space search. You make a threat (a three or a four), assume that opponent blocks it in all the available places *simultaneously* and proceed with the next threat. If there's a win to be found this way, then there would be a win in the normal game as well.
Now for the Big Thing: in the over the board game actual chess move consists of lifting a piece and putting it back on the board. The new algorithm postpones the second step. You threaten the opponent Queen, it goes up and does not return for a moment. You make a move, opponent may react by reinstating a Queen on any previously legal square. If You still win,, You have saved some search effort.
Brunetti wrote:Finally I've implemented a long time idea, concentric alpha-beta. The principle is simple, but to implement it I had to overcome a lot of practical problems. It seems to work very fine now, despite one crash every 4 or 5 games, but this could be corrected by a better implementation.
I thought a while about that, and I won't release Protej 058 sources, but I'm going to public the algorithm: I think that this can be a good contribute to the community.
This is the last gauntlet, 1+1 time and G6 positions:
Brunetti wrote:
Actually Range and Detail have to be choosen better; I won't say my values, tuned after a lot of tests... Some work for you too
If you are going to publish your findings, be prepared for a lot of nay-sayers out there. They have to be able to duplicate your results in order for your claims to be taken seriously.
You should be prepared to:
1. Show the complete implementation in C
2. Discuss the role of "Range" and "Detail" in the reduction of the search space. Start with a chess-specific case, but generalize to a "general" case for any game.
3. Compare the number of nodes explored as a function of depth searched from several different positions, and compare/contrast the same search with Alpha_Beta, PVS(), and perhaps MTd(f).
I wish you the best of luck, and I hope your early results hold out good for the long run!
The algorithm, as currently stated, would play very poorly. It will go down the left most branch of the tree and will not look at any 2nd moves much less 3rd or other choices. Its only chance of looking at some second choices is if it hits terminal nodes such as checkmate or stalemate.