I don't think the difference can be explained by better compression.BB+ wrote:I'm still not quite sure what Shredder is doing for the extra compression in the 157MB version. One guess is simply a Huffman layer on top of what I presume is run-length encoding (in the 441MB version), though I can't quite get that much space-reduction in my own experiments. I don't know if the slowdown from such uncompression would be ~10x as with Shredder either.
The one-sided trick seems to fit the numbers very well. I wouldn't exclude this possibility too easily.
If it is not the one-sided trick, it must be some kind of extended capture resolution. Either searching a few plies for a winning or drawing conversion, or searching for a winning or drawing pawn move.
With capture resolution added to the compression scheme I outlined here I currently get 461MB for two-sided 3-4-5 piece tables (storing somewhat more information than the Shredder bitbases, since I differentiate between wins/losses affected by the 50-move rule and those not affected).
The subset of pawnful tables add up to about 387MB, so adding "pawn-move resolution" should save quite a bit of space, but it would also seem to create the possibility of a search-space explosion during probing...
My DTZ (or rather DTZ50+) tables are now just over 1950MB (they store signless values, so require the WDL tables). I think I can get them a bit smaller still. Applying the one-sided trick would again more than half them in size. Since they are only probed at the root and probing is quite fast, I don't think it makes sense not to apply the trick. Also DTZ tables for positions with an overwhelming material advantage for one side should probably just be completely dispensed with (especially with WDL available).