Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Schachprogrammierung / Datenstrukturen in Schachprogrammen
- By Lothar Jung Date 2021-09-24 09:59 Edited 2021-09-24 10:21 Upvotes 1
Hier eine gute Einführung in Bäumen (tree):

https://services.informatik.hs-mannheim.de/~schramm/ads/files/Kapitel10_01.pdf
- By Lothar Jung Date 2021-09-24 14:07 Edited 2021-09-24 14:31 Upvotes 2
Programme bestehen aus Algorithmen (Rechen- und Entscheidungsanweisungen) und Datenstrukturen.
Schachprogramme verwenden eine Reihe von Datenstrukturen:

1. Arrays bei der Brettdarstellung
2. Zeichenketten (Strings) sowie streams für die Ein- und Ausgabe (UCI)
3. Bäume (trees) für die Mini-Max und Alpha-Beta-Suche (mit Schlüsselwerten)
4. Tabellen für  das hashing auf Transformation Tabellen, (indexierte) Endspiel- und Eröffnungstabellen
5. Netze (nets) für NNUE und Lc0 (Tensornets)

Diese Datenstrukturen werden in den höheren Programmiersprachen durch Klassen definiert.

Bei der Bewertung (Eval) werden Algorithmen d.h. Schleifen, Entscheidungsanweisungen, Funktionen mit Variablen verwendet.
Dabei wird auf die o.a. Datenstrukturen zugegriffen bzw. sie werden verändert.
- By Lothar Jung Date 2021-09-24 14:58 Upvotes 1
Hier ein wissenschaftlicher Artikel über „Künstliche Neuronale Netze – Aufbau und Funktionsweise“

http://geb.uni-giessen.de/geb/volltexte/2004/1697/pdf/Apap_WI_1997_10.pdf
- By Lothar Jung Date 2021-09-24 15:03 Upvotes 1
Hier eine umfassende Veröffentlichung über Algorithmen und Datenstrukturen:

https://vowi.fsinf.at/images/7/78/Uni_Wien-Algorithmen_und_Datenstrukturen_VO_%28Schikuta%29_-_Skriptum.pdf
- By Lothar Jung Date 2023-06-26 19:32
In Schachprogrammen werden verschiedene Datenstrukturen verwendet, um das Schachbrett und die Spielpositionen effizient zu repräsentieren. Die genaue Wahl der Datenstrukturen kann je nach Programmierung und spezifischen Anforderungen variieren. Hier sind jedoch einige häufig verwendete Datenstrukturen in Schachprogrammen:

1. Schachbrett-Repräsentation: Das Schachbrett selbst kann in einer Datenstruktur wie einem 8x8-Array (z.B. in C oder Java) gespeichert werden. Jedes Element des Arrays repräsentiert ein Feld auf dem Brett und kann Informationen über den darin befindlichen Spielstein enthalten.

2. Bitboards: Bitboards sind eine effiziente Methode zur Repräsentation von Schachpositionen. Dabei wird jedem Schachstein eine Bitmaske zugeordnet, die die Positionen auf dem Schachbrett darstellt, an denen sich der Stein befindet. Bitwise-Operationen werden verwendet, um schnelle Überprüfungen von Spielzügen und Positionen durchzuführen.

3. Hash-Tabellen: Schachprogramme verwenden oft Hash-Tabellen, um bereits berechnete Positionen zu speichern. Durch das Hashing der Schlüsselpositionen können sie später schnell abgerufen werden, um Zeit bei der Berechnung von Zügen zu sparen. Dies wird insbesondere in der Eröffnungsbuchdatenbank und beim Zugzwang eingesetzt.

4. Stacks: Stacks (Stapel) werden verwendet, um den Spielverlauf und die Züge zu verfolgen. Schachprogramme verwenden häufig eine Stack-Datenstruktur, um Zuginformationen zu speichern und das rückgängige Ziehen (Undo) von Spielzügen zu ermöglichen.

5. Listen und Arrays: Listen oder Arrays werden verwendet, um verschiedene Spielinformationen wie verfügbare Züge, Zugbewertungen und Zughistorie zu speichern. Diese Datenstrukturen ermöglichen das schnelle Abrufen und Aktualisieren von Informationen während der Berechnung und Bewertung von Spielzügen.

6. Bäume und Graphen: Schachprogramme nutzen oft Baum- oder Graphenstrukturen, um den Suchraum für mögliche Züge zu organisieren. Durch den Aufbau von Suchbäumen oder Graphen können sie die möglichen Züge systematisch durchsuchen und bewerten.

Diese Liste ist nicht abschließend, da Schachprogramme eine Vielzahl von Algorithmen und Datenstrukturen verwenden können, um effiziente und starke Spielzüge zu berechnen. Die genaue Wahl der Datenstrukturen hängt von der Komplexität des Programms, den verfügbaren Ressourcen und den spezifischen Spielstrategien ab, die das Programm implementieren möchte.
Up Topic Hauptforen / Schachprogrammierung / Datenstrukturen in Schachprogrammen

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill