Changes

Jump to: navigation, search

Hashing Dictionaries

205 bytes added, 13:57, 8 July 2021
no edit summary
Many high level programming languages (notably [[Python]] (van Rossum, 1993)) have useful predefined data structures (e.g. associative arrays) which are dynamically resizable hash tables that resolve collisions by probing techniques. The basic lookup function used in Python is based on Algorithm D: Open Addressing with Double Hashing from Section 6.4 in Knuth <ref>[[Donald Knuth]] ('''1998'''). ''The Art of Computer Programming''. Volume 3, Sorting and Searching. Addison Wesley. ISBN 0201896850</ref>.
=Avoiding Rotated Bitboards with Direct Lookup=
Sam Tannous compared this approach to a [[Rotated Bitboards]] implementation in Python and found direct lookup favorable for move generation. In languages like [[C]], targeting 64-bit cpus like [[x86-64]], or even in [[Java]], it is likely another story if one compares ''Open Addressing with Double Hashing'' with [[Rotated Bitboards|rotated]] or [[Hash Table#PerfectHashing|perfect hashing]] techniques like [[Kindergarten Bitboards|Kindergarten]] or even [[Magic Bitboards]].
==Toolkit==
* [[Shatranj (Toolkit)]]
 
=Forum Posts=
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77648 What is the point of magic hashing over simply using masked occupancy as index ?] by Gautier Blandin, [[CCC]], July 06, 2021 » [[Magic Bitboards]]
=References=
<references />
'''[[Sliding Piece Attacks|Up one Level]]'''

Navigation menu