It basically explores all possible moves and all possible countermoves and selects the best one. Of course it is extremely well engineered and optimized, but this is the main concept.
As a consequence, it does not to be "trained" on a dataset with odds to play without a piece.
Looks like it used to be brute force, as you say, but has since incorporated an NN after ita loss to AlphaZero
Good names in there :)
Removing a piece may mess up the values chosen for the piece square tables and certainly messes up with the opening book - but on the other hand, it makes it sooner for the engine to end up using it's tablebases in the end game!
Nothing fancy. Just pure brute force.
Brute force is good enough, at any given moment the # of possible moves is finite. The limiting factor is how much hardware you have and how quick you need the next move.
The author is playing a 2-year old version (stockfish 14 vs 16 is current) on low depth (22 vs for the strength they use to get max rating I think they use at least 48 or so, which is clearly much stronger). If they played stockfish 16 on a decent depth it would be an annhilation I'm sure.
I'm a very average chess player, and there are moves I play that stockfish at depth 16 things are a blunder that at depth 32 it thinks are a brilliancy. These are typically things in openings I play a lot where I've had a chance to do some homework and learn the best moves on a high depth.
(Uh, I mean, could be done by a team which is able to train MuZero)