A Reminder About The Strengths And Limitations Of Chess Engines

Last week, I wrote an article about methodically building an endgame fortress, given a fascinating position that arose in a student’s game. One thing I did not focus on in the discussion was the fact that he has inquired about confusing evaluations by chess engines during endgames. Often, in positions that we know a correct and foolproof drawing technique, a chess engine will show a large evaluation score incorrectly suggesting that the superior side has such an advantage that it should win. He knows about tablebases, which are exactly computed evaluations of simplified endgame positions in which exhaustive search has proved the result is a win or draw, along with the full variations leading to the end result. So he asked me why the computer can be unreliable.

The reason for this has been known for decades, but is worth periodically remembering given how this period of human history has shown a huge explosion in the successful use of computation to make progress in various domains, including chess, Web search, and shopping prediction. This success has led many to believe (either with excitement or worry) that computers are on the verge of becoming super-intelligent. I don’t believe this is the case at all (but this general topic is outside the scope of this site).

Here I just want to point out something very concrete: that endgame fortresses are still difficult for computer engines to “understand”. Coincidentally, GM Daniel Naroditsky recently wrote an article about breaking fortresses. I highly recommend studying it, and experimenting with “throwing an engine” at the positions he gives. You will get an idea of how a computer engine “thinks” as it tries to search forward for some kind of forcing variation.

The main difficulty for chess engines is that they are largely programmed to search forward, whereas we human beings in the domain of chess are able to use meta-reasoning rather than just huge, long chains of “if/then/else” in order to generate ideas, plans, and test them out by working backward (instead of forward). Breaking a fortress involves taking in the biggest possible picture of what is happening on the board, eliminating what must not possibly work (usually, this means shuffling pieces around is not enough), and trying to see if something might work (usually, this means some kind of temporary “weakening” through Pawn advances in order to eventually create a Pawn break). We humans can with care determine what the “critical” positions must look like, in which everything has to be accurate else counterplay is achieved, and then zoom in to see if we can create a forcing line (usually based on some kind of Zugzwang or switch of attention from one side of the board to the other) that is tactically justified.

Chess engines are tremendously useful for this kind of work, actually, despite what I’ve said: on their own they may not be able to crack fortresses, but they can supply the assistance to a human who is “directing” the problem solving on the meta level and assigning specific calculations and verifications to the chess engine. The usefulness of computers as assistants is very exciting and real, but should never be confused with claims that they will achieve autonomous “intelligence”.

Franklin Chen


Author: Franklin Chen

Franklin Chen is a United States Chess Federation National Master. Outside his work as a software developer, he also teaches chess and is a member of the Pittsburgh Chess Club in Pennsylvania, USA. He began playing in chess tournaments at age 10 when his father started playing in them himself but retired after five years, taking two decades off until returning to chess as an adult at age 35 in order to continue improving where he left off. He won his first adult chess tournaments including the 2006 PA State Game/29 and Action Chess Championships, and finally achieved the US National Master title at age 45. He is dedicated to the process of continual improvement, and is fascinated by the practical psychology and philosophy of human competition and personal self-mastery. Franklin has a blog about software development, The Conscientious Programmer and a personal blog where he writes about everything else, including his recent journey as an adult improver in playing music.