I was visiting Peter Heine Nielsen in around 2009. He was on that day in a bit of a low mood, questioning what he was doing and how he was organising his life. As we all do this from time to time, I do not think I break any confidences in saying this. His biggest frustration was professional. He would spend at least 20 hours each week trying to find an advantage for White against the Marshall and the Berlin Defence (later renamed the Berlin Wall – or very recently, the London Defence by Anand…) on behalf of the then World Champion, Viswanathan Anand. Everyone knew that this was an unachievable task. Still the work had to be done, in order that the advantage would exist only for the brief moment in time that is a game of chess…
A similar thing happens when we are practising calculation. Especially these days when everything is checked by computers. I see it clearly these days while I am working with quite a strong student on his calculation before a series of spring tournaments. He is a very strong player, but calculating is still not an easy task for him.
And the issue with calculation is of course the same as with opening analysis. The game is rigged. Chess is a draw; there is no advantage to be found against good defence. And calculation exercises are an even bigger scam. If you are at your peak, all you can do is match the computer’s findings.
At least theoretically this is so. In reality there are some exercises that are “cooked”, meaning that the student finds something the teacher did not anticipate because of his fallible nature, or (rarely) the computer is beaten by the student. It is very pleasing when it happens in tactical positions; but much more likely to happen in weird cases where calculating 10 moves ahead does not give any significant advantage.
The example from above is one of my favourites:
Grischuk – Bologan, Astana (rapid) 2012
In the game Bologan resigned after 33.Qa8? instead of playing 33…Qxe1+! 34.Bxe1 Rd1. After taking on e1, the rook can return to e6 and the fortress is simple.
I believed falsely that 33.Qb8? was stronger, because the b-pawn falls. So did most of my students at a training seminar in Denmark.
Only IM Nikolaj Mikkelsen rejected this idea. He suggested that 33.Rxe6!! followed by taking on b6 was the only way to play. And indeed he was right. With the rook on e6, Black can put the bishop on b6 and White cannot create serious winning chances as far as I can see. Remember that the king cannot make it across the e-file.
Or maybe we are all crazy?
Anyway, I feel this is a good point to the story. We are chasing an impossible goal; to calculate without mistakes, to out-calculate the computer, to find an advantage against the Marshall or Berlin and so on. Whenever we find a hole in the impossible, creating the magic of being better than the machines for just a moment, theory or the solutions will get repaired and the scope for upsets reduced with one again. It is the nature of the game. But it is still fun playing! At the end you have to beat your opponent and not a computer…
Interesting example .İt seems like the computers still can not “comprehend” the idea of fortresses.
@Mehmet
I am not sure it is that easy to program it; though I also do not think it should be that hard…
It is probably doable to to program the computer to recognize at least certain fortresses, the problem would be when to have the programme run that particular check. If the computer is checking millions of positions per second, it can hardly check them all for fortressness, but having a position-dependent criterion to initiate the check for fortresness would presumably be either too compicated as well, or too crude and hence not sufficiently reduce the number of positions to be checked.
I see difficulties in formally defining the notion of fortress; I understand it as a position where one side has a material advantage (say a Queen vs a Rook and Bishop) but can not make any progress against best defense. You could as Mathijs suggested define some well-known fortresses of this type and make sure the program checks these at some point, but to recognize all is impossible since not all fortresses are known; indeed some unwinnable positions were discovered by the use of table bases. We recognize fortresses by applying some form of logic over the structure of the position (like what can he attack, king can not cross e-file and so on) and this kind of reasoning is very difficult to generalize and therefore very difficult to learn to a computer program.
My suggestion was meant a little bit different, Indra. I did not mean to compile a database of fortress positions that should be checked occasionally. Something quite like that is already going on of course, with the usual endgame databases, that do not contain fortress positions per se.
My idea was something like the following: take a position like white:pa4,d4,g4, black:pa5,d5,g5. Kings in on their respective halves. Here the computer would give many variations to buttress its correct evaluation of 0.00, but the human being can prove at a glance that it is a draw.
Now I am quite sure that it is possible to programme a computer to see this, i.e. to establish without moving the pieces that certain areas of the board are forever off limits and that there can be no win without entering there. But it would not be easy. The programme would have to guess at the area that is off limits, it would have to make sure that it is in fact off limits and make sure that there is no win without entering that area. All of that is trivial to the human eye, but would either require a lot of knowledge or a lot of checks for the computer.
Let’s suppose that one can write a programme that can prove fortressness for certain types of fortress, i.e. it can prove, more or less without moving the pieces (or at least without giving actual variations), whether a position is a fortress of a certain type or not. This would no doubt be a relatively cumbersome programme. Depending on how you do it, it would probably take many iteration for many positions that are not in fact fortresses and a least one iteration for every position (probably more, as you would have to check several guesses for possible off limits areas). Compare this to the positional evaluation in a normal programme: it is one shot! It simply tells you how much material and some other features which it weighs directly. To add the fortress programme to the positional evaluation would slow the evalation down by something like a factor 10 always and something much larger later on (when fortresses become more likely).
A programme which does this might be able to check for fortresses, but it would be tactically whiped off the board by my i-phone (I don’t have an i-phone).
Now, still all is not lost. We might only run the check occasionally, if the position is sufficiently likely to merit it. But still this does not resolve the problem. Either our criterion of sufficient likeliness is very crude or very sophisticated. In the latter case it slows down calculation by itself. If it is crude, then it either indicates that we sould run the programme a lot or a little. If a little, we miss many fortresses, if a lot we have to run the programme too often, thus once more slowing calculation. (The solution would be to find a crude criterion that yields a very high likelihood of fortressness. I doubt it exists.)
Conclusion. If something is easy to see in a logical way, then it should be programmable. But it might be a relatively cumbersome programme. Computers are strong at chess now because their evaluation method is crude, but they calculate quickly. To make them see fortresses is to make them more like humans: smarter, but slower. I think we have a good division of labour: make the programme do the crude calculations and occasionally feel superior when we get to point out an error. (This turned into a bit of an essay; I was inspired I guess. I should point out that I am not a programmer.)
Hello,
Just my 2 cents, as a programmer and a not very successful amateur chess engine author! 🙂
I think Mathijs is right:
Yes, you could add code to detect fortresses, like when a lot of pawns are linked, etc.
Yes, it would make the engine stronger in those types of positions.
But! It would hurt the engine in every other position. And therefor the overall playing strength would decrease.
A different approach to detection of fortresses is for the engine to realize that the evaluation remains the same, regardless of increased search depth. No matter how deep it searches the advantage remains at +2, for example.
But I can’t see an easy way to exploit that knowledge.
Except for us humans looking at en engine output. If the evaluation reaches a maximum, and stays there, the computer is telling us it is a fortress, even though it does not realize it itself! 🙂
Kind regards,
Jesper
@Mathijs: sure, if you only check some well-known fortresses you can add those to your algorithm. That could be a good start. Your overall algorithm will be a bit slower, but I do not believe it will have a significant impact on the playing strength as you suggest. Those PC’s are very, very fast these days. But the main point Jacob was making was not about well-known theoretical fortresses but (at least as I understood it) about those other fortresses out-there needing some kind of logical reasoning to work.
For instance, the notion of not being able to cross the e-file, which is not strictly true, since the Q can be used to cross the e-file, but then white loses the Q against the R, and it is very unlikely that white then will win. However, if at that point white can run to c6, win Bishop against pawn and then promote with other b-pawn, who knows? Then it depends on the position of the black King and what has happened with black’s pawns in the mean-time. Say if white first has managed to make a f4-g5-h4 pawn wedge against black’s majority it’s still a win?
Probably black can win the pawn at f4 and guard b8, sac bishop on b8 and then its a pawn race? Who knows? Even this fortress needs some additional analysis to work.
So I guess the difficulty is not only to formalize the kind of reasoning we apply in these cases, but also that small differences can sill influence the eventual outcome.
@Jesper: if the evaluation stays the same for infinity, the outcome is a draw. So this knowledge would be very very useful :). However, infinity takes a bit too long to calculate, even for a modern PC.
@Jacob Aagaard
I competed in a tournament last week after more than a decade of not competing. What I found is that I for a lack of better words ‘lacked match fitness’. As my concentration wavered and was very tired during and after each match. Apart from competing in more tournaments is there another way of becoming match fit and not so tired during match play. Should I perhaps do a lot of puzzles for a long time frame to build up match fitness for next tournament? What do you suggest? Thanks in advance.
@Ed
Before the 2006 match in Elista, Kramnik looked at openings for six hours and then solved hard studies in order to be as strong as possible in the final phases of the game. It worked for him.
As you will probably not study openings for six hours a day, I would recommend to try to solve really hard exercises in the evening when you are tired after work. Keep at it for a few weeks and share your experience with us. It is absolutely an experiment, but I think all here would like to know how that works out for you if you do it.