Diskussion:Bitboard
Programmertechnik
[Quelltext bearbeiten]Ich habe zwar noch kein Schach-Bitboard programmiert, aber ich glaube nicht, dass man es so machen würde wie im Artikel erklärt. Um ein "angriffs-Board" zu indizieren, müsste man erst mal die Nummer des Felds mit der Figur ermitteln, was nur mit einer Schleife (ineffizient) geht. Ich würde eher für jeden der 8 möglichen Züge des Springers die Bitverschiebung betrachten, mit der das Bit des Springers im Bitboard auf das jeweilige Zielfeld zu schieben ist. Idealerweise würde man dann ohne irgendwelche Feldzugriffe (auch relativ langsam) ermitteln, ob der Zug pseudolegal ist, und in dem Fall die Bitverschiebung (Weite und Richtung) zusammen mit dem Wort, das ein 1-Bit an der Springerposition enthält, in die Zugliste eintragen. Damit kann der Zug später auch effizient, ohne Schleife oder Feldzugriff, ausgeführt werden. --Megatherium (Diskussion) 17:50, 7. Apr. 2020 (CEST)
- Ich habe mich ausführlich mit Bitboards für Connect Four, Tic-Tac-Toe (siehe Einzelnachweise) und Mühle beschäftigt. In all den Fällen sind Bitboards eine sehr effiziente Technik, um eine Gewinnsituation zu erkennen. Für Zuggeneratoren sind sie bei den genannten Spielen weniger relevant. Im Artikel ist plausibel beschrieben, wie man die Springer-Bitboards vorberechnet und wie sie angelegt sind. Der Begriff des "Angriffs-Boards" scheint aus dieser Quelle im Abschnitt Patterns and Attacks zu stammen. Mit so einem Verfahren könnte man also z.B. gut feststellen, ob der gegnerische König von den Bits "erwischt" wird und im Schach steht. Mit Blick auf die gleiche Quelle im Abschnitt zu Move Generation Issues habe ich jedoch meine Zweifel, dass man diese Art von Bitboards für die Zugenerierung beim Schach nutzen würde; das scheint wesentlich komplizierter zu sein. (Übrigens haben Deine neulichen Updates der Seite gut getan!) --@denkspuren (Diskussion) 20:14, 7. Apr. 2020 (CEST)