Page 1 of 1

Spezial Zobrist Keys

Posted: Wed Jan 26, 2011 3:00 pm
by Octopus
Um einen Eintrag im Cache möglichst gut einer bestimmten Po-
sition auf dem Brett zuzuordnen, verwendet man zumeist eine
XOR-Überlagerung von Figur- und Koordinaten abhängigen vorbe-
rechneten Pseudozufallszahlen.

Eine dabei zu verwendende elementare Zufallszahl gleich Null
wäre aber fatal, da diese zu keiner Veränderung des repräsen-
tativen Gesamtfingerabdrucks führen würde. Zugegebener Maßen
ist das ein Extremfall, jedoch das Problem wird deutlich: je
ungleichverteilter die Bits in einer mitbauenden Zufallszahl
sind, um so geringer ist die Veränderung im finalen Schlüssel
bzw. in dessen Komplement.

Aus diesem Grund interessiert ein bestimmter Teilbereich be-
sonders für die Verwendung als Schlüsselbausteine, nämlich
jener aus Zahlen, die binär aus gleichviel Einsen und Nullen
zusammengesetzt sind.

Bei einem monochromen Ansatz besteht ein elementarer Wert je-
doch aus einem Paar solcher speziellen Random Zahlen, da hier
ein Perspektivwechsel auf dem Brett mit einem SWAP des Keys
einher geht.

Hier werden ganz primitiv und gleichverteilt erzeugte Pseudo-
zufallszahlen (falls monochrom eben paarweise) verwendet:

Seed(n+1) = Seed(n) * 87641 + 98731 (32 Bit)
Rand(n+1) = SWAP(Seed(n+1))

Code: Select all

Startwert:      0x43ba7e08
Wiederholungen: 0xffffffff

Random-Bit-Field:

1110011111011001000010100110011111100010000001110100101110101101
1110011110010100100011001001000000001000011011100001011111001110
1001111111101011110101100010001100011110011110001000101011111110
0100001011011100101011011001101010011011101111110011011110010111
0100000100011111100010001101110110010001010110110011011011010001
0110100101010011000111100001101110110001000001110010100000100011
0101110101101001011101011010101001000101000111011111011110011010
1000100001011010001110101000001110000110100011100101001011010001
0000011110011111101110011100110010101000011000101101001010010111
0010101101010011000110011010101010000100011110100101010001010101
1000101100101011101001110011100011110000001000010010101001000100
1010111011011000100100100010001110101111111100100100111010101001
1101010101011101011110110110011100100101000111111110110101101111
1100111110010001101100111011000100011101010000110011100110011011
1010101110101101001001100001000111001001010110000100110000100001
0110110000111010010100001011100001010110110011110011000101101111

Balanced Zobrist Keys:

00110101011100001100100011011011 0x3570c8db
10110110100011100000100101100111 0xb68e0967
10101101000010011101001011110001 0xad09d2f1
10101111110011000011001100110000 0xafcc3330
01111110000100111010001010101001 0x7e13a2a9
11000011011110110011000100010011 0xc37b3113
10100001000111011010110110001110 0xa11dad8e
01000011000111001011111011101000 0x431cbee8
00111110011001111010100001101000 0x3e67a868
01101010111000111010011100110000 0x6ae3a730
10101011110111110010000010100100 0xabdf20a4
00101100001100100101011011011101 0x2c3256dd