boardgamestheoryStatysta
2piorunówRozwiązanie Matematyczne Gry w Warcaby (8x8): 32-Bitowe Bitboardy i Bazy Końcówek Chinook
#warcaby #programowanie #algorytmy #teoriagier #matematyka #ciekawostki
W 2007 roku zespół prof. Jonathana Schaeffera z University of Alberta ogłosił na łamach prestiżowego czasopisma Science pełne matematyczne rozwiązanie klasycznej gry w warcaby angielskie (8x8 Draughts / Checkers). Przestrzeń stanów gry licząca około 5 × 10^20 możliwych konfiguracji została zredukowana do formalnego dowodu teorii gier: przy perfekcyjnej grze obu stron wynik partii warcabowej jest bezwzględnym remisem.
1. Reprezentacja 32-Bitowa i Izomorfizm Planszy
Podczas gdy w szachach używa się planszy 8x8 z 64 aktywnymi polami, w warcabach bierki poruszają się wyłącznie po polach ciemnych. Dokładnie 32 pola są funkcjonalne, co pozwala na idealne odwzorowanie całego stanu gry w 32-bitowych rejestrach procesora (uint32_t).
Do pełnego opisu dowolnej pozycji w pamięci RAM wystarczą cztery 32-bitowe maski bitowe: piony jasne, damki jasne, piony ciemne oraz damki ciemne. Operacje ruchów po przekątnych (prawo-góra, lewo-góra, prawo-dół, lewo-dół) realizowane są poprzez proste stałe przesunięcia bitowe (bit-shift) o 3, 4 lub 5 pozycji, z uwzględnieniem parzystości wierszy planszy.
2. Wymuszone Bicia i Kombinatoryka Generacji Ruchów
Fundamentalną regułą wyróżniającą warcaby jest obowiązek bicia (ang. mandatory capture). W generatorze ruchów najpierw oblicza się wektor skoków za pomocą bitowych operacji logicznych AND pomiędzy polami zajętymi przez przeciwnika a polami docelowymi przesuniętymi o wektor skoku. Jeśli maska skoków jest niezerowa, silnik całkowicie pomija generowanie cichych przesunięć, drastycznie redukując gałąź przeszukiwania.
Wielokrotne bicia (ciągi bić damką lub pionem) są ewaluowane rekurencyjnie przy użyciu algorytmów przeszukiwania w głąb (DFS) z natychmiastowym cofaniem stanu (backtracking na bitboardach).
3. 10-Bierkowe Bazy Końcówek (Endgame Tablebases)
Kluczowym filarem sukcesu projektu Chinook było stworzenie bezbłędnych baz końcówek (Endgame Tablebases) obliczonych metodą retrograde analysis (analizy wstecznej). Zespół Schaeffera przeliczył wszystkie możliwe układy do 10 bierek włącznie, co stanowiło bazę danych o objętości ponad 39 bilionów pozycji.
Dla każdej z tych pozycji wyznaczono wartość w sensie teorii gier (Wygrana, Przegrana, Remis) oraz metrykę DTM (Distance to Mate / Distance to Conversion). W trakcie przeszukiwania drzewa gry Alpha-Beta silnik, trafiając na dowolną konfigurację z 10 lub mniej bierkami, nie dokonuje heurystycznej oceny, lecz pobiera z tablicy dokładną wartość z prawdopodobieństwem błędu równym zero.
4. Proof Number Search i Rozwiązanie Gry
Samo przeszukiwanie minimax z bazami końcówek nie wystarczyłoby do rozwiązania gry od pozycji początkowej. Schaeffer zastosował algorytm Proof Number Search (PNS) oraz jego wariant df-pn (depth-first proof-number search). Algorytmy te dynamicznie przypisują każdemu węzłowi dwie liczby: liczbę dowodu (proof number - wysiłek potrzebny do udowodnienia wygranej) oraz liczbę zaprzeczenia (disproof number - wysiłek potrzebny do udowodnienia remisu lub przegranej), kierując zasoby obliczeniowe tam, gdzie najłatwiej obalić słabe warianty.
5. Praktyczna Implementacja i Nowoczesne Aplikacje Webowe
Architektura 32-bitowych warcabów stanowi wzorzec czystości inżynieryjnej. Implementacja silników analitycznych w WebAssembly pozwala graczom na błyskawiczną analizę posunięć, wykrywanie błędów taktycznych i doskonalenie wariantów otwarć bezpośrednio w przeglądarce. Świetnym przykładem takiego nowoczesnego narzędzia jest Checkers Crown – gra w warcaby online z silnikiem analizy, oferująca intuicyjny interfejs, precyzyjne reguły i zaawansowaną analizę partii dla graczy na każdym poziomie.

Co to za gówno?
@WysokiTrzmiel tl;dr - zrobili automat do wygrywania w warcaby. Nie taki, który potrafi obliczyć sobie najlepsze ruchy etc, ale taki, który w zasadzie ma przewidziane WSZYSTKIE możliwe partie - i wybiera zawsze najlepsze możliwe rozwiązanie, niczego nie musi obliczać.
Czytałem o tym jeszcze w Angorze (czy w Angorce nawet?) właśnie gdzieś w okolicach tego 2007 roku. Do teraz muszę przyznać, że jestem pod wrażeniem i to podwójnym:
1) dla tych naukowców, że to się dało psiakrew zrobić i to zrobili
2) dla szachów, gdyż podobny manewr dla nich ni prącia by nie wypalił - bo możliwych kombinacji ruchów i partii jest w zasadzie nieskończenie wiele.
A teraz czuję się staro.

