Introduce Multi-Cut
authorMiguel Lahoz <miguel_lahoz@protonmail.com>
Sat, 5 Jan 2019 20:53:21 +0000 (04:53 +0800)
committerSt├ęphane Nicolet <stephanenicoletsuriphone@gmail.com>
Sun, 6 Jan 2019 15:02:31 +0000 (16:02 +0100)
commitf69106f7bb82f97ba07fb06a31395039d08af9f4
treedaf2cfc699e6ab1c5159fa1e453927aaf14c439b
parentbb843a00c1ef381162dc9c2491b5436b6cf5563f
Introduce Multi-Cut

This was inspired after reading about
[Multi-Cut](https://www.chessprogramming.org/Multi-Cut).

We now do non-singular cut node pruning. The idea is to prune when we
have a "backup plan" in case our expected fail high node does not fail
high on the ttMove.

For singular extensions, we do a search on all other moves but the
ttMove. If this fails high on our original beta, this means that both
the ttMove, as well as at least one other move was proven to fail high
on a lower depth search. We then assume that one of these moves will
work on a higher depth and prune.

STC:
LLR: 2.96 (-2.94,2.94) [0.50,4.50]
Total: 72952 W: 16104 L: 15583 D: 41265
http://tests.stockfishchess.org/tests/view/5c3119640ebc596a450c0be5

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,3.50]
Total: 27103 W: 4564 L: 4314 D: 18225
http://tests.stockfishchess.org/tests/view/5c3184c00ebc596a450c1662

Bench: 3145487
src/search.cpp