www.wikidata.de-de.nina.az
Ein Bitboard Bitmap Board ist eine Datenstruktur zur Darstellung einer Spielsituation Stellung die haufig Verwendung in Computerprogrammen fur Brettspiele findet insbesondere bei Schachprogrammen Inhaltsverzeichnis 1 Ubersicht 2 Vor und Nachteile 3 Anwendungsbeispiel Computerschach 3 1 Zug Berechnung 3 1 1 Bauer Springer Konig 3 1 2 Turme Laufer Dame 4 Siehe auch 5 EinzelnachweiseUbersicht BearbeitenDie Grundidee der Bitboard Struktur ist es dass sich die Frage ob auf einem bestimmten Spielfeld eine bestimmte Figur vorhanden ist mit ja oder nein beantworten lasst Aufgrund dessen kann die Belegung eines Spielplans bretts endlicher Grosse als Sequenz einzelner Dualzahlen dargestellt werden die jeweils den Wert 0 oder 1 annehmen konnen Dualzahlen Bits stellen die Basis der meisten heutigen Computersysteme dar Kann man eine Information als Sequenz von Bits darstellen die in ein Datenwort der verwendeten Maschine passen lasst sie sich moglicherweise sehr effizient verarbeiten Einfluss auf die Effizienz von Bitboard Strukturen haben insbesondere die Spielbrettgrosse am besten ist diese Grosse fest und kleiner oder gleich der Wortgrosse des Computers die Anzahl unterschiedlicher Figuren da ein einzelnes Wort nur die Belegung mit einer einzigen Figurenart beschreiben kann Grundsatzlich sind Bitboard Strukturen fur verschiedene Brettspiele geeignet So gibt es zum Beispiel auch Bitboard Implementationen fur Spiele wie Dame 1 Othello 2 Vier gewinnt 3 oder auch Tic Tac Toe 4 Besondere Bedeutung haben Bitboards allerdings im Bereich des Computerschachs erlangt Ein Schachbrett besteht aus 8 8 64 Feldern ein Wort eines zugehorigen Bitboards ist also 64 Bit lang Diese Grosse kann von modernen Computersystemen direkt als Datenwort verarbeitet werden was einen grossen Geschwindigkeitsvorteil verspricht Beispiele fur Computerschach Programme die Bitboards verwenden sind Crafty 5 und die aktuelle Version 5 0 von GNU Chess 6 Vor und Nachteile BearbeitenDer Hauptvorteil von Bitboard Strukturen liegt in der potentiell sehr hohen Effizienz sowohl mit Blick auf Speicherplatz als auch vor allem mit Blick auf die Programmgeschwindigkeit Eine komplette Schachstellung lasst sich z B gut in 64 Bytes kodieren im Prinzip sogar in 32 Bytes Viele Operationen auf den so reprasentierten Stellungen konnen jeweils durch wenige Prozessorbefehle ausgefuhrt werden 7 Der hauptsachliche Nachteil von Bitboards liegt in ihrer Andersartigkeit gegenuber alteren weiter verbreiteten Darstellungsarten Robert Hyatt der Entwickler der bekannten Schachsoftware Crafty schreibt uber seine ersten Erfahrungen mit Bitboards This has likely been the primary reason that bitmaps have not been widely used they are different and take some time to sink in to the point where they become easy to use I would speculate that it took me roughly a year before I was able to get past the mental gymnastics of designing an algorithm using offset representation ideas and then working out how to modify the idea to fit the bitmap approach Das ist wahrscheinlich der Hauptgrund wieso Bitboards nicht weit verbreitet waren sie sind anders und es braucht einige Zeit bis das soweit sackt dass sie einfach anzuwenden sind Ich schatze es hat grob ein Jahr gedauert bis ich gelernt hatte den gedanklichen Umweg zu vermeiden erstmal einen Algorithmus zu entwerfen der mit Feld Indizes arbeitet und dann herauszufinden wie die Idee auf den Bitboard Ansatz ubertragen werden kann Robert Hyatt Da mittlerweile eine ganze Reihe von quelloffenen Bitboard Implementationen existieren durfte dieses Argument gegen Bitboards allerdings nur noch schwach wiegen und in seiner Bedeutung weiter abnehmen Anwendungsbeispiel Computerschach BearbeitenWie bereits erwahnt ist ein Wort eines Bitboards im Schach Fall aufgrund der Grosse des Schachbretts genau 64 Bit lang Als Besonderheit gibt es 12 verschiedene Arten Figuren Bauern Turme Springer Laufer Dame Konig jeweils Weiss und Schwarz Aus diesem Grund braucht man mindestens vier Worter um eine Stellung vollstandig zu reprasentieren Meist verwendet man aber deutlich mehr um die Informationen einfacher verarbeiten zu konnen d h es werden auch redundante Informationen explizit dargestellt Die eingangs erwahnte Software Crafty beispielsweise speichert neben den Positionen der 12 Figurensorten in weiteren Wortern die Positionen aller weissen bzw schwarzen Figuren zusammengenommen und zudem gedrehte Versionen des Spielbretts fur weitere Optimierungen Eine komplette Datenstruktur die den momentanen Zustand des Spieles vollstandig beschreibt muss zudem Informationen uber den Status z B von Rochade Moglichkeiten en passant Zugen der 50 Zuge Regel und gegebenenfalls weiteren Sonderregeln enthalten a b c d e f g h 8 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 87 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 76 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 65 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 54 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 43 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 32 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 21 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 1 a b c d e f g h Schach Ausgangsposition 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 01 1 1 1 1 1 1 10 0 0 0 0 0 0 0Die Ausgangsposition siehe Diagramm fuhrt z B fur die weissen Bauern auf folgende Bitboard Struktur Bitmuster eines Worts 00000000 00000000 00000000 00000000 00000000 00000000 11111111 00000000 2 Auf welche Art gezahlt wird also welches Feld des Schachbretts welchem Index Bitposition im Wort zugeordnet wird ist letztlich wahlfrei Bei diesem Beispiel und im Folgenden wird beginnend beim Feld A1 zeilenweise gezahlt also gehort zu A1 das Bit 0 zu A2 das Bit 1 und so weiter bis schliesslich zu Feld H8 und Bit 63 Wie bereits erwahnt verwalten einige Schachprogramme sogar Bitboard Strukturen in verschiedener Zahlweise zeilen oder spaltenweise bzw auch diagonal gleichzeitig da hierdurch bestimmte Operationen effizienter moglich sind Zug Berechnung Bearbeiten Ein zentrales Problem bei der Umsetzung eines Schachprogramms stellt die Berechnung der moglichen Folgezuge aus einer gegebenen Position heraus dar Bei Benutzung von Bitboard Strukturen erfolgt dies durch logische Operationen auf der Spielplan Belegung Hierbei mussen zwei Arten von Figuren unterschieden werden bei den springenden Figuren wie Bauern Springern und Konig ist allein die Belegung des Zielfelds entscheidend Bei den gleitenden Figuren wie Turmen Laufer und Dame ist die Zugmoglichkeit komplexer da Figuren bestimmte Zielfelder blockieren konnen ohne diese selbst zu belegen Bauer Springer Konig Bearbeiten a b c d e f g h 8 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 87 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 76 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 65 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 54 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 43 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 32 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 21 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 1 a b c d e f g h Mogliche Springer Zuge vom Feld D4 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 1 0 1 0 0 00 1 0 0 0 1 0 00 0 0 0 0 0 0 00 1 0 0 0 1 0 00 0 1 0 1 0 0 00 0 0 0 0 0 0 0Bei diesen Figuren kommt es lediglich darauf an ob auf dem Zielfeld eine Figur der eigenen Farbe platziert ist Tatsachlich stellen die Bauern wiederum einen Sonderfall dar da sie unterschiedlich ziehen je nachdem ob sie eine gegnerische Figur schlagen oder nicht Darauf soll hier jedoch nicht eingegangen werden Man betrachte als Beispiel einen Springer auf Feld D4 Die moglichen Zielfelder sind im Diagramm zu sehen Die Frage ob der Springer grundsatzlich auf ein bestimmtes Zielfeld ziehen kann ist wiederum eine mit ja oder nein zu beantwortende Frage deren Antwort als Bitboard kodierbar ist Fur jedes Feld von A1 bis H8 kann ein solches Angriffs Board im Vorhinein berechnet und abgespeichert werden Im gewahlten Beispiel ist das Feld D4 das 28 Feld zeilenweise von A1 aus gezahlt also wurde in einer Liste von 64bit Zahlen der Index 27 wenn 0 der erste Index ist mit folgender Zahl belegt 00000000 00000000 00101000 01000100 00000000 01000100 00101000 00000000 2 Wenn diese insgesamt 64 moglichen Bitboards fur den Springer beim Programmstart bereits berechnet werden ist der Zugriff spater also als einfache Index Operation sehr effizient moglich Um nun zu entscheiden auf welche Felder der Springer tatsachlich im vorliegenden Fall ziehen kann ist noch Information uber die aktuelle Spielplan Belegung in der eigenen Farbe erforderlich Diese liegt entweder direkt vor oder kann aus den 6 Belegungen der einzelnen Figurensorten durch bitweise ODER Verknupfung bestimmt werden Durch ein bitweises NICHT angewendet auf diese Belegung bestimmen sich die Felder die nicht durch Figuren der eigenen Farbe belegt sind Die logische Bedingung die fur einen Springer Zug auf ein bestimmtes Feld erfullt sein muss ist nun gerade dass dort keine Figur der eigenen Farbe stehen darf In dem eben beschriebenen Komplement Bitboard ist genau bei jedem Feld das Bit gesetzt bei dem diese Bedingung erfullt ist Das gewunschte Ergebnis ergibt sich so schliesslich durch bitweise UND Verknupfung mit dem vorberechneten Angriffs Board des Springers Mit leichten Anpassungen kann dasselbe Verfahren verwendet werden um die Zuge fur Bauern und fur den Konig zu berechnen Turme Laufer Dame Bearbeiten Diese Figuren bewegen sich grundsatzlich anders als die drei vorgenannten Arten Bei diesen gleitenden Figuren kommt es zusatzlich zur Belegung des Zielfelds darauf an ob der Weg dorthin blockiert ist sei es durch Figuren der eigenen oder der gegnerischen Farbe Die Dame kann als Kombination aus Turm und Laufer interpretiert werden was je nach genauer Wahl der Datenstrukturen eine Vereinfachung darstellen kann Siehe auch BearbeitenComputerschachEinzelnachweise Bearbeiten Darstellung von Bitboard Strukturen im Dame Spiel englisch Diskussion verschiedener Implementierungsdetails von Othello inklusive Bitboards englisch Bitboards and Connect Four beschreibt ausfuhrlich eine Implementierung fur Vier gewinnt englisch Das Lehrvideo Bitboards fur Tic Tac Toe erklart eine Umsetzung fur Tic Tac Toe deutsch Robert Hyatt Rotated bitmaps a new twist on an old idea In Journal of the International Computer Chess Association Band 22 Nr 4 Dezember 1999 S 213 222 englisch craftychess com abgerufen am 15 November 2023 Dokumentation von GNU Chess 5 0 Robert Hyatt Chess program board representations In craftychess com Abgerufen am 15 November 2023 englisch Vergleichender Artikel uber Datenstrukturen fur Schachprogramme Abgerufen von https de wikipedia org w index php title Bitboard amp oldid 239139882