Ronald de Man

Home * People * Ronald de Man

Ronald de Man, alias Syzygy, a Dutch mathematician, computer scientist and IP lawyer, in the 90s researcher at Eindhoven University of Technology, competitor at the International Mathematical Olympiad 1990, winning the Silver medal, and the ACM International Collegiate Programming Contest 1995, to win Bronze within the ARoMA team from Delft University of Technology. He is co-developer of the Linux desktop environment and graphical user interface GNOME, and as chess programmer author of the chess and Antichess playing program Sjaak, which plays at FICS under the handle TrojanKnight. He ported Stockfish to plain C, dubbed CFish, and to Rust as Rustfish. =Scoring Root Moves= Ronald de Man proposed a method to apply randomness and/or bonuses, i.e. developing bonus, or penalties suggested by an oracle, in scoring moves at the root without any changes in alpha-beta search or leaf evaluation, and without any problems with the transposition table : First of all, don't worry, it is possible. But you should not try to pass the bonus to the tip nodes. That would indeed give hash problems. The solution is to not change anything in your Search procedure. That already solves all potential hash problems. You just add the bonus AFTER Search has returned a value for a particular root move. So that would be done in your SearchRoot. What you basically do there is change every occurrence of

value = -Search(-beta, -alpha,...) in value = bonus[n] - Search(bonus[n]-beta, bonus[n]-alpha,...)

where bonus[n] is the development bonus value for the move you are currently searching. It is all very natural when you think about it. You should consider Search as a black box. You give it some numbers alpha and beta, and Search gives you a number x, with the properties that, relative to the real value v of this move,

1. If v <= alpha, then x <= alpha, 2. If v >= beta, then x >= beta, 3. If alpha < v < beta, then x = v.

If you search a move, you want to know if its real value + bonus[n] is bigger than alpha. So you want to know if its real value is bigger than alpha-bonus[n]. So you give Search the bounds alpha-bonus[n] and beta-bonus[n], and add bonus[n] to the result. And you do this in SearchRoot.

So no fudging with hash table scores whatsoever!

Of course this trick gives all kinds of possibilities. Not only can you stimulate development, or add in some randomization. It is also easy to solve the 'underpromotion' problem: to prevent the program from under-promoting to a rook (in situations where the piece will probably be captured the next move anyway), you give underpromotion moves a penalty. Or in trivially drawn endgames like KRKR you give captures a bonus. Or in not-so-trivially drawn endgames for which tablebases give draw values you give moves that give away a piece (but do not change the outcome) a penalty, hoping that the opponent will make a fatal mistake further on in the game :-)

Ronald de Man

=Bloom Filter= Ronald de Man revealed the trick to speed up repetition detection with a Bloom filter, implemented as a small hash table indexed by some lower bits of the hash-key, to increment a counter while entering and decrement the counter while leaving a node.

=Syzygy Bases= In April 2013, Ronald de Man published his Syzygy Bases, a compact endgame tablebase of up to six pieces. It consist of two sets of files, WDL files storing win/draw/loss information considering the fifty-move rule, for access during search, and DTZ files with distance-to-zero information for access at the root.

=Selected Publications=
 * Ronald de Man (1995). On Composants of Solenoids. Fundamenta Mathematicae 147, pdf
 * Ronald de Man (1999). The Generating Function for the Number of Roots of a Coxeter Group. Journal of Symbolic Computation, Vol. 27, No.6
 * Richa Malhotra, Ronald van Haalen, Ronald de Man, Michiel van Everdingen (2003) Managing service-level agreements in metro ethernet networks using backpressure. Bell Labs Technical Journal, Vol. 8, No. 2.

=Forum Posts=

1995 ...

 * Re: random play by Ronald de Man, rgcc, November 28, 1996
 * Re: Hash functions for use with a transition table by Ronald de Man, rgcc, March 7, 1997 » BCH Hashing
 * Re: computer chess "oracle" ideas... by Ronald de Man, rgcc, April 3, 1997 » Oracle
 * Re: computer chess "oracle" ideas... by Ronald de Man, rgcc, April 7, 1997
 * Re: triple repetition by Ronald de Man, rgcc, October 27, 1997

2010 ...

 * New 6-piece tablebases by Ronald de Man, CCC, April 01, 2013 » Syzygy Bases
 * tablebase caching / mmap / page cache by Ronald de Man, CCC, October 13, 2013 » Memory, Endgame Tablebases, Syzygy Bases
 * Question to syzygy author by Marco Costalba, CCC, April 24, 2016
 * tablebase compression / academic integrity by Ronald de Man, CCC, May 19, 2016
 * pin-aware see by Ronald de Man, FishCooking, September 14, 2016 » SEE - The Swap Algorithm, Pin, Stockfish
 * DTM50 by Ronald de Man, CCC, May 22, 2018

=External Links=
 * syzygy1 · GitHub
 * GitHub - syzygy1/tb » Syzygy Bases
 * GitHub - syzygy1/Cfish: C port of Stockfish » CFish
 * Syzygy from Wikipedia
 * Syzygy (mathematics) from Wikipedia


 * ICGA: Losing Chess by Guy Haworth

=References= Up one level