Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One thing that is on my (way too long) list of things to try is n-gram chess. 1-gram chess would, for every move from black, have a dictionary of (following move, win probability) pairs, and it would pick one that is legal using the win probabilities to generate a distribution (if there is a sure win, almost always pick it; if there is a move that always lost before, pick it very rarely)

You can start this of with empty dictionaries, and have the thing learn after each game (let two copies play for a few days to get let them teach each other how to play chess)

2-gram chess would improve on this by using (white move, black's reply) as the key in such a dictionary.

I think that would make for better chess than this. For some N, N-gram chess might even superficially look like the real thing at times.



Chess engines make use of similar Markov-chain-like techniques, such as killer [1] and history [2] heuristics. They also use win-loss-draw outcomes from millions of grandmaster games in a similar way to build an opening database, to guide them through the opening, the phase which they are weakest at.

[1] https://chessprogramming.wikispaces.com/Killer+Heuristic

[2] https://chessprogramming.wikispaces.com/History+Heuristic


I'm trying to figure out how you could store this without having massive dictionaries after a night of training games. I guess it's all just integers which helps.


You could probably just drop moves that are below a certain threshold after every k games.


How is this different from an opening tree?


It would be agnostic of how far the game has progressed (if 1. …c5 is a good reply to 1. e4, it also would be considered a good reply to 75. e4)

It would also be used in end games.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: