Changes

Jump to: navigation, search

Transposition Table

5,765 bytes added, 16:17, 10 April 2021
no edit summary
[[FILE:The_Persistence_of_Memory.jpg|border|right|thumb|link=https://en.wikipedia.org/wiki/The_Persistence_of_Memory|
[[Arts#Dali:Category:Salvador Dalí|Salvador Dalí]], [https://en.wikipedia.org/wiki/The_Persistence_of_Memory The Persistence of Memory] 1931 ]]
A '''Transposition Table''',<br/>
first used in [[Richard Greenblatt|Greenblatt's]] program [[Mac Hack#HashTable|Mac Hack VI]] <ref>[[Richard Greenblatt]], [[Donald Eastlake]] and , [[https://en.wikipedia.org/wiki/Steve_Crocker Stephen D. Crocker]] ('''1967'''). ''The Greenblatt Chess Program''. Proceedings of the AfiPs Fall Joint Computer Conference, Vol. 31, pp. 801-810. Reprinted ('''1988''') in [[Computer Chess Compendium]], [http://archive.computerhistory.org/projects/chess/related_materials/text/2-4.Greenblatt_Chess_Program/The_Greenblatt_Chess_Program.Greenblatt_Eastlake_Crocker.1967.Fall_Joint_Computer_Conference.062303060.sm.pdf pdf] from [[The Computer History Museum]] or as [http://dspace.mit.edu/handle/1721.1/6176 pdf or ps] from [http://libraries.mit.edu/dspace-mit/ DSpace] at [[Massachusetts Institute of Technology|MIT]]</ref> <ref>[[Albert Zobrist]] ('''1970'''). ''A New Hashing Method with Application for Game Playing''. Technical Report #88, Computer Science Department, The University of Wisconsin, Madison, WI, USA. Reprinted ('''1990''') in [[ICGA Journal#13_2|ICCA Journal, Vol. 13, No. 2]], [http://www.cs.wisc.edu/techreports/1970/TR88.pdf pdf]</ref> <ref>[http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/259fbfd2b39b8ee4/80c64ba0f632fc31 Re: Berliner vs. Botvinnik Some interesting points], post 8 by [[Bradley Kuszmaul|Bradley C. Kuszmaul]], [[Computer Chess Forums|rgcc]], November 06, 1996 » Transposition Table in [[Mac Hack]]</ref> , is a database that stores results of previously performed searches. It is a way to greatly reduce the search space of a [[Search Tree|chess tree]] with little negative impact. Chess programs, during their [[Brute-Force|brute-force]] search, encounter the same [[Chess Position|positions]] again and again, but from different sequences of [[Moves|moves]], which is called a [[Transposition|transposition]]. Transposition (and [[Refutation Table|refutation]]) tables are techniques derived from [[Dynamic Programming|dynamic programming]] <ref>[https://en.wikipedia.org/wiki/Dynamic_programming#Algorithms_that_use_dynamic_programming Algorithms that use dynamic programming from Wikipedia]</ref> , a term coined by [[Richard E. Bellman]] in the 1950s, when programming meant planning, and dynamic programming was conceived to optimally plan multistage processes <ref>[[Mathematician#SDasgupta|Sanjoy Dasgupta]], [[Mathematician#CHPapadimitriou|Christos H. Papadimitriou]], [[Mathematician#UVVazirani|Umesh Vazirani]] ('''2006'''). ''[http://www.cs.berkeley.edu/%7Evazirani/algorithms.html Algorithms]''. [https://en.wikipedia.org/wiki/McGraw-Hill McGraw-Hill], ISBN: 978-0073523408, [http://www.amazon.com/gp/product/0073523402?ie=UTF8&tag=ebookdire-20&link_code=as3&camp=211189&creative=373489&creativeASIN=0073523402 amazon], Chapter 6, Dynamic programming</ref> .
=How it works=
<span id="KeyCollisions"></span>
==Key Collisions==
Key collisions or type-1 errors are inherent in using signatures with far less bits than required to encode all reachable chess positions. A key collision occurs when two different positions map the same hash key or signature <ref>[http://www.talkchess.com/forum/viewtopic.php?t=40062 TT Key Collisions, Workarounds?] by [[Clemens Pruell]], [[CCC]], August 16, 2011</ref> <ref>[http://www.talkchess.com/forum/viewtopic.php?t=44082 how to measure frequency of hash collisions] by [[Daniel Shawul]], [[CCC]], June 16, 2012</ref> . When storing only a partial key, the chance of a collision greatly increases. To accept only hits where [[Hash Move|stored moves]] are [[Pseudo-Legal Move|pseudo-legal]] decreases the chance of type-1 errors. On his computer chess page <ref>[http://www.cse.buffalo.edu/~regan/chess/computer/ Computer Chess - Hash Collisions in Chess Engines, and What They May Mean...] by [[Kenneth Wingate W. Regan]]</ref>, [[Kenneth Wingate W. Regan|Ken Regan]] broached on chess engine bugs, anomalies and hash collisions, and mentions a [[Shredder|Shredder 9.1]] game where a key collision might have caused a strange move <ref>[http://www.chessgames.com/perl/chessgame?gid=1352348 Pablo Lafuente vs Shredder (Computer) (2005)] from [http://www.chessgames.com/index.html chessgames.com]</ref> <ref>[http://www.chessbase.com/newsdetail.asp?newsid=2525 Current tournaments – Sanjin, Biel, Argentina, Israel], [[ChessBase|ChessBase News]], July 21, 2005</ref> .
<span id="bits"></span>
==Bits Required==
<span id="Entry"></span>
=What Information is Stored=
Typically, the following information is stored as determined by the [[Search|search]] <ref>[[Dennis Breuker]], [[Jos Uiterwijk]], and [[Jaap van den Herik]] ('''1997'''). ''Information in Transposition Tables''. [[Advances in Computer Chess 8]]</ref> :
* [[Zobrist Hashing|Zobrist-]] or [[BCH Hashing|BCH-key]], to look whether the position is the right one while probing
* [[Best Move|Best-]] or [[Refutation Move|Refutation move]]
<span id="ReplacementStrategies"></span>
=Replacement Strategies=
Because there are a limited number of entries in a transposition table, and because in modern chess programs they can fill up very quickly, it is necessary to have a scheme by which the program can decide which entries would be most valuable to keep, i.e. a replacement scheme <ref>[[Dennis Breuker]], [[Jos Uiterwijk]] and , [[Jaap van den Herik]] ('''1994'''). ''Replacement Schemes for Transposition Tables''. [[ICGA Journal#17_4|ICCA Journal, Vol. 17, No. 4]]</ref> . Replacement schemes are used to solve an index collision, when a program attempts to store a position in a table slot that already has a different entry in it. There are two opposing considerations to replacement schemes:
* Entries that were searched to a high depth save more work per table hit than those searched to a low depth.
* Entries that are closer to the leaves of the tree are more likely to be searched multiple times, making the table hits of them higher. Also, entries that were searched recently are more likely to be searched again.
<span id="TwoTier"></span>
==Two-tier System==
This strategy, devised by [[Ken Thompson]] and [[Joe Condon]] <ref>[[Joe Condon]] and , [[Ken Thompson]] ('''1983'''). ''BELLE Chess Hardware''. [[Advances in Computer Chess 3]]</ref> , uses two tables, side by side. For each table slot, there is a depth-preferred and an always-replace entry <ref>[[Dennis Breuker]], [[Jos Uiterwijk]] and , [[Jaap van den Herik]] ('''1996'''). ''Replacement Schemes and Two-Level Tables''. [[ICGA Journal#19_3|ICCA Journal, Vol. 19, No. 3]]</ref> .
<span id="Bucket"></span>
==Bucket Systems==
This family of strategies is similar to the two-tier system, but any number of tiers (known as "buckets") can be used (typically the number is based on the size of a cacheline). The difference is that the buckets are not specific to one consideration, but rather the new entry overwrites the entry in the bucket with the lowest depth <ref>[[Don Beal]] and , [[Martin C. Smith]] ('''1996'''). ''Multiple Probes of Transposition Tables''. [[ICGA Journal#19_4|ICCA Journal, Vol. 19, No. 4]]</ref> .
<span id="Aging"></span>
==Aging==
=Publications=
==1967 ...==
* [[Richard Greenblatt]], [[Donald Eastlake]], [https://en.wikipedia.org/wiki/Steve_Crocker [Stephen D. Crocker]] ('''1967'''). ''The Greenblatt Chess Program''. Proceedings of the AfiPs Fall Joint Computer Conference, Vol. 31, pp. 801-810. Reprinted ('''1988''') in [[Computer Chess Compendium]], [http://archive.computerhistory.org/projects/chess/related_materials/text/2-4.Greenblatt_Chess_Program/The_Greenblatt_Chess_Program.Greenblatt_Eastlake_Crocker.1967.Fall_Joint_Computer_Conference.062303060.sm.pdf pdf] from [[The Computer History Museum]] or as [http://dspace.mit.edu/handle/1721.1/6176 pdf or ps] from [http://libraries.mit.edu/dspace-mit/ DSpace] at [[Massachusetts Institute of Technology|MIT]]
==1970 ...==
* [[Albert Zobrist]] ('''1970'''). ''A New Hashing Method with Application for Game Playing''. Technical Report #88, Computer Science Department, The University of Wisconsin, Madison, WI, USA. Reprinted ('''1990''') in [[ICGA Journal#13_2|ICCA Journal, Vol. 13, No. 2.]], [http://www.cs.wisc.edu/techreports/1970/TR88.pdf pdf]
==1990 ...==
* [[Dennis Breuker]], [[Jos Uiterwijk]], [[Jaap van den Herik]] ('''1996'''). ''Replacement Schemes and Two-Level Tables''. [[ICGA Journal#19_3|ICCA Journal, Vol. 19, No. 3]].
* [[Don Beal]] and , [[Martin C. Smith]] ('''1996'''). ''Multiple Probes of Transposition Tables''. [[ICGA Journal#19_4|ICCA Journal, Vol. 19, No. 4]]
* [[Dennis Breuker]], [[Jos Uiterwijk]], [[Jaap van den Herik]] ('''1997'''). ''Information in Transposition Tables''. [[Advances in Computer Chess 8]]
* [[Dennis Breuker]] ('''1998'''). ''[http://www.dennisbreuker.nl/thesis/ Memory versus Search in Games]''. Ph.D. Thesis, [[Maastricht University|Universiteit Maastricht]], The Netherlands. ISBN 90-9012006-8.
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/77ec7b3a94555fb4/d8019f5c3716cd1a hash table fail high/fail low problem] by [[Robert Hyatt]], [[Computer Chess Forums|rgcc]], November 26, 1996
'''1997'''
* [httphttps://groups.google.com/groupd/msg/rec.games.chess.computer/browse_frm0sIKY_dfLUs/thread/d2c20a63f75f2d4b Qw9J1ECWeBoJ Hash functions for use with a transition table] by [[Tim Foden]], [[Computer Chess Forums|rgcc]], March 5, 1997» [[Transposition Table]]: [httphttps://groups.google.com/groupd/msg/rec.games.chess.computer/msg0sIKY_dfLUs/9b240379394bc968 aMlLOXkDJJsJ Re: Hash functions for use with a transition table] by [[Ronald de Man]], [[Computer Chess Forums|rgcc]], March 7, 1997 » [[BCH Hashing]]
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/1d601e208c97c395 Handling of repetition (draw) in transposition table] by Bjarke Dahl Ebert, [[Computer Chess Forums|rgcc]], June 9, 1997 » [[Repetitions]]
* [https://www.stmintz.com/ccc/index.php?id=10317 double hash tables] by [[Chris Whittington]], [[CCC]], October 01, 1997
* [https://www.stmintz.com/ccc/index.php?id=10471 Hash collisions (was Re: Let's analyze move 36)] by [[Daniel Homan]], [[CCC]], October 08, 1997 » [[#Collisions|Collisions]]
* [https://groups.google.com/d/msg/rec.games.chess.computer/S70uojQGHNU/vU-xEHCfFl0J Using values from transition tables] by [[Tim Foden]], [[Computer Chess Forums|rgcc]], October 13, 1997
'''1998'''
* [https://www.stmintz.com/ccc/index.php?id=13810 Fast hash algorithm] by John Scalo, [[CCC]], January 08, 1998
* [https://www.stmintz.com/ccc/index.php?id=22816 draw by repetition and hash tables] by [[Werner Inmann]], [[CCC]], July 24, 1998
'''1999'''
* [https://www.stmintz.com/ccc/index.php?id=41612 Hash Tables - Should one store EP, Castling rights etc?] by [[Steve Maughan]], [[CCC]], January 30, 1999 » [[Castling Rights]], [[En passant]]
* [https://www.stmintz.com/ccc/index.php?id=43613 Hash collisions and a little maths] by [[Rémi Coulom]], [[CCC]], February 18, 1999
* [https://www.stmintz.com/ccc/index.php?id=43990 Hash Collisions] by [[KarinsDad]], [[CCC]], February 21, 1999
'''2003'''
* [https://www.stmintz.com/ccc/index.php?id=291039 How important is a big hash table? Measurements...] by [[Tom Kerrigan]], [[CCC]], March 29, 2003
* [https://www.stmintz.com/ccc/index.php?id=306858 Another memory latency test] by [[Dieter BürssnerBürßner]], [[CCC]], July 17, 2003
* [https://www.stmintz.com/ccc/index.php?id=308392 Replacement shemes] by [[Sune Fischer]], [[CCC]], July 27, 2003
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/42c6f293450dba50/ Is it necessary to include empty fields in the hash key of a position?] by Frank Hablizel, [[Computer Chess Forums|rgcc]], December 25, 2003
* [http://www.talkchess.com/forum/viewtopic.php?t=33084 Zero window TT entry] by [[Vlad Stamate]], [[CCC]], March 05, 2010 » [[Null Window]]
* [http://www.talkchess.com/forum/viewtopic.php?t=33514 Null-move pruning and the hash table] by [[Robert Purves]], [[CCC]], March 28, 2010 » [[Null Move Pruning]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=34606 Crafty Transpostion Table Question] by [[Eric Stock]], [[CCC]], May 30, 2010 » [[Crafty]], [[Shared Hash Table#Lockless|Lockless Hashing]]* [http://www.talkchess.com/forum/viewtopic.php?t=39481 TT behavior] by [[Karlo Balla|Karlo Bala Jr.]], [[CCC]], June 25, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=36099 working!] by [[Robert Hyatt]], [[CCC]], September 17, 2010 » [[Principal Variation#SeparateTT|Separate TT for the PV]]
* [http://www.talkchess.com/forum/viewtopic.php?t=36516 Is a querying the hash tables such a huge bottleneck?] by [[Oliver Uwira]], [[CCC]], October 28, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=41640 Mate score in TT] by [[Marco Costalba]], [[CCC]], December 28, 2011 » [[Score#MateScores|Mate Scores]]
'''2012'''
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=52138 Question on TT] by [[Giuseppe Cannella]], [[Computer Chess Forums|Winboard Forum]], January 06, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=41917 Stockfish hash implementation] by [[Jon Dart]], [[CCC]], January 10, 2012 » [[Stockfish]]
* [http://www.talkchess.com/forum/viewtopic.php?t=42833 cache alignment of tt] by [[Daniel Shawul]], [[CCC]], March 11, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=43172 Hash table division] by [[Ed Schroder|Ed Schröder]], [[CCC]], April 05, 2012
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=43769 TT question?] by [[Fermin Serrano]], [[CCC]], May 19, 2012 » [[Quiescence Search]]
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=52394 hashtables] by [[Daniel Anulliero]], [[Computer Chess Forums|Winboard Forum]], May 22, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=44082 how to measure frequency of hash collisions] by [[Daniel Shawul]], [[CCC]], June 16, 2012
* [http://www.open-chess.org/viewtopic.php?f=5&t=2703 transposition table implementation help] by lazyguy123, [[Computer Chess Forums|OpenChess Forum]], August 09, 2014
* [http://www.talkchess.com/forum/viewtopic.php?t=53462 Transposition table chaining and replacement strategy] by [[Alex Ferguson]], [[CCC]], August 28, 2014
* [https://groups.google.com/d/msg/fishcooking/6nNXAQQAXOE/FXs2chqDargJ Using the Transposition Table for long searches] by Theodr Elwurtz, [[Computer Chess Forums|FishCooking]], September 22, 2014 » [[Stockfish]]
* [http://www.talkchess.com/forum/viewtopic.php?t=53849 Speculative prefetch] by [[Peter Österlund]], [[CCC]], September 27, 2014 » [[Memory]]
* [http://www.talkchess.com/forum/viewtopic.php?t=53859 Transposition Table Oddity] by [[Thomas Kolarik]], [[CCC]], September 28, 2014
* [http://www.talkchess.com/forum/viewtopic.php?t=57255 most similar hashes of two positions] by [[Alexandru Mosoi]], [[CCC]], August 12, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=57348 The cost of transposition table instrumentation] by [[Steven Edwards]], [[CCC]], August 23, 2015
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=57634 atomic TT] by lucasart, [[CCC]], September 13, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=57603 Transposition table test positons] by [[Robert Pope]], [[CCC]], September 11, 2015 » [[Test-Positions]]
* [http://www.talkchess.com/forum/viewtopic.php?t=57924 Hash cache] by [[Harm Geert Muller]], [[CCC]], October 12, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=64021 Hash Tables Deep Blue] by Gustavo Mallada, [[CCC]], May 18, 2017 » [[Deep Blue]]
* [http://www.talkchess.com/forum/viewtopic.php?t=64274 Hash table] by [[Daniel José Queraltó]], [[CCC]], June 12, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=64522 Improving hash replacing schema for analysis mode] by [[Daniel José Queraltó]], [[CCC]], July 05, 2017 » [[Transposition Table#ReplacementStrategies|Replacement Strategy]], [[Persistent Hash Table]]
* [http://www.talkchess.com/forum/viewtopic.php?t=64564 TT aging] by [[Marco Pampaloni]], [[CCC]], July 09, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=64604 Equidistributed draft] by [[Alvaro Cardoso]], [[CCC]], July 14, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=64688 cutechess-cli: not restarting an engine because of tt] by [[Folkert van Heusden]], [[CCC]], July 22, 2017 » [[Cutechess-cli]]
* [http://www.talkchess.com/forum/viewtopic.php?t=65327 Size of Transposition Table Entry] by [[Jason Fernandez]], [[CCC]], September 29, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=65526 Transposition table and Fine#70] by [[Vincent Tang]], [[CCC]], October 23, 2017 » [[Lasker-Reichhelm Position]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=65903 TT in Qsearch] by [[Laurie Tunnicliffe]], [[CCC]], December 05, 2017 » [[Quiescence Search]]
* [http://www.talkchess.com/forum/viewtopic.php?t=66135 Transposition table based pruning idea] by [[Jerry Donald]], [[CCC]], December 25, 2017 » [[Pruning]]
* [http://www.talkchess.com/forum/viewtopic.php?t=66183 hashing in chess4j] by [[James Swafford]], [[CCC]], December 30, 2017 » [[chess4j]]
'''2018'''
* [http://www.talkchess.com/forum/viewtopic.php?t=66640 Marcel Duchamp endgame "splits" engines / hash phenomenon] by [[Kenneth Wingate W. Regan|Kenneth Regan]], [[CCC]], February 19, 2018 » [[Arts#:Category:Marcel Duchamp|Marcel Duchamp]]* [http://www.open-chess.org/viewtopic.php?f=5&t=3170 Do You Track Hash Table Efficiency?] by OneMoreTime, [[Computer Chess Forums|OpenChess Forum]], April 07, 2018
* [http://www.talkchess.com/forum/viewtopic.php?t=67049 Mate scores in TT (a new?... approach)] by Vince Sempronio, [[CCC]], April 09, 2018
* [http://www.talkchess.com/forum/viewtopic.php?t=67078 Yet another Mate scores in TT thread] by [[Andrew Grant]], [[CCC]], April 12, 2018 » [[Checkmate]], [[Score]]
* [http://www.talkchess.com/forum/viewtopic.php?t=67102 Draw scores in TT] by [[Srdja Matovic]], [[CCC]], April 14, 2018 » [[Draw]], [[Score#DrawScore|Draw Score]]
* [http://www.talkchess.com/forum/viewtopic.php?t=67131 Depth extensions and effect on transposition queries] by [[Kenneth Jones]], [[CCC]], April 16, 2018 » [[Extensions]], [[Check Extensions]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67387 Not detected collisions in tt probing] by [[Andreas Matthies]], [[CCC]], May 09, 2018 » [[#Collisions|Collisions]]
'''2019'''
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=69629 Playing transposition table moves in the Quiescence search] by [[Andrew Grant]], [[CCC]], January 17, 2019 » [[Quiescence Search]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=70586 Prefetch and Threading] by [[Dennis Sceviour]], [[CCC]], April 25, 2019 » [[Memory]], [[Thread]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67599 Debugging a transposition table] by [[Vincent Tang]], [[CCC]], May 29, 2018 » [[Debugging]], [[Lasker-Reichhelm Position]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=70931 Hash collision?] by [[Tom King]], [[CCC]], June 05, 2019
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=71994 Looking for TT policy advice] by [[Vivien Clauzon]], [[CCC]], October 04, 2019 » [[#ReplacementStrategies|Replacement Strategy]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72462 Probing the transposition table at depth 0] by [[Gonzalo Arro]], [[CCC]], November 29, 2019
==2020 ...==
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72932 hash collisions] by [[Jon Dart]], [[CCC]], January 28, 2020 » [[#KeyCollisions|Key Collisions]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72964 Dense board representation as hash code] by koedem, [[CCC]], February 01, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73110 Zobrist key independence] by [[Harm Geert Muller]], [[CCC]], February 17, 2020 » [[Zobrist Hashing]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73126 SIMD methods in TT probing and replacement] by [[Harm Geert Muller]], [[CCC]], February 20, 2020 » [[SIMD and SWAR Techniques]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73202 Measuring Hash Collisions (once again)] by [[Ed Schroder|Ed Schröder]], [[CCC]], February 27, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73232 Hash size, hash fullness, strength] by [[Vivien Clauzon]], [[CCC]], February 29, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73493 Where to enter/read position into hash table in perft?] by [[Marcel Vanthoor]], [[CCC]], March 28, 2020 » [[Perft]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73516 Hash entry/bucket memory usage optimization] by [[Marcel Vanthoor]], [[CCC]], March 30, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74081 asymmetric evaluation and TT] by [[Vivien Clauzon]], [[CCC]], June 02, 2020 » [[Asymmetric Evaluation]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74411 Correct way to store and extract mate scores] by Ian Mitchell, [[CCC]], July 08, 2020 » [[Checkmate]], [[Score]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75549 Principal Variation Search vs. Transposition Table] by [[Marcel Vanthoor]], [[CCC]], October 26, 2020 » [[Principal Variation]], [[Principal Variation Search]]
'''2021'''
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76499 Transposition table replacement scheme] by [[Niels Abildskov]], [[CCC]], February 05, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76508 Best practices for transposition tables] by Brian Adkins, [[CCC]], February 06, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76575 TT: key collisions] by Brian Adkins, [[CCC]], February 13, 2021 » [[#KeyCollisions|Key Collisions]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76887 Hash move ordering vs. Hash cuts: savings in number of nodes visited] by [[Marcel Vanthoor]], [[CCC]], March 16, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77054 PERFT transposition table funny?!] by [[Martin Bryant]], [[CCC]], April 10, 2021 » [[Perft]], [[Memory]]
=External Links=
* [https://en.wikipedia.org/wiki/Zobrist_hashing Zobrist hashing from Wikipedia]
* [https://en.wikipedia.org/wiki/G%C3%B6del_numbering Gödel numbering from Wikipedia]
* [http://www.cse.buffalo.edu/~regan/chess/computer/ Computer Chess - Hash Collisions in Chess Engines, and What They May Mean...] by [[Kenneth Wingate W. Regan]]
* [http://www.jamesswafford.com/2017/12/30/hashing-in-chess4j/ Hashing in chess4j] by [[James Swafford]], December 30, 2017» [[chess4j]]
* [[Videos#TalWilkenfeld:Category:Tal Wilkenfeld|Tal Wilkenfeld]] - [https://en.wikipedia.org/wiki/Transformation_%28Tal_Wilkenfeld_album%29 Table For One], [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: {{#evu:https://www.youtube.com/watch?v=yu6zUwDv-o4|alignment=left|valignment=top}}
<references />
'''[[Search|Up one Level]]'''
[[Category:Salvador Dalí]]
[[Category:Marcel Duchamp]]
[[Category:Tal Wilkenfeld]]

Navigation menu