Silnik szachowy to specjalistyczne oprogramowanie, które w dużym skrócie potrafi analizować pozycje szachowe i wybierać (teoretycznie) najlepsze posunięcia w danej pozycji. Historia maszyn do gry w szachy jest starsza niż mogłoby wam się wydawać. Pierwsze próby stworzenia takowej maszyny sięgają 1846 roku, w którym to Charles Babbage rozważał nauczenia gry w szachy swojej maszyny „Analitycal Engine”, jednak pierwszą faktyczną maszyną potrafiącą grać (w ograniczonym stopniu) stworzono około roku 1890.
Od tamtego momentu tworzono coraz to nowsze, szybsze i bardziej dokładne silniki, które w tym momencie potrafią już ograć szachowych arcymistrzów.
Istnieje wiele technik wykorzystywanych przy obliczaniu najlepszych ruchów w pozycji przez silniki szachowe, a to są najpopularniejsze:
W praktyce wygląda to tak, że program musi ocenić pozycję, wybrać ruchy-kandydatów, uszeregować je, obliczyć warianty i ocenić nowo powstające pozycje. A po każdym posunięciu tworzą się nowe ruchy-kandydaci i znów trzeba wybierać , a silniki stworzone są do tego, żeby wybierać te opcje jak najlepiej. Coś takiego nazywamy drzewem wariantów.
Do niedawna najsilniejszym oprogramowaniem szachowym był Stockfish, jednak został zdetronizowany przez AlphaZero – silnik stworzony przez Google. W turnieju rozegranym przez owe oprogramowania AlphaZero kompletnie zdominowało swojego przeciwnika z wynikiem: 25 zwycięstw, 25 remisów i 0 porażek grając białymi i 3 zwycięstwa, 47 remisów i 0 porażek grając czarnymi. Algorytm AlphaZero bazuje na wykorzystaniu głębokiej sieci neuronowej (deep neural network). Sieć neuronowa jest naszą próbą przełożenia ludzkich połączeń neuronowych na język komputerowy. Dzięki tej technologii silnik potrafi się uczyć i na bieżąco analizować swoje błędy.
AlphaZero ma również taką przewagę nad innymi silnikami, że uczy się gry na podstawie partii przegranych samemu ze sobą. AlphaZero po czterech godzinach grania z samym sobą, nauczył się wystarczająco dużo o szachach, aby przewyższyć ranking Stockfisha, pomimo faktu, że przeanalizował jedyne 0,1 procenta pozycji, które przeanalizował Stockfish.
W dzisiejszych czasach silniki szachowe są ogólnodostępne i może z nich korzystać każdy zainteresowany. Zastosowanie znajdują między innymi jako:
Silniki szachowe są potężnymi narzędziami i niestety zdarza się, że są wykorzystywane przez graczy w celu nieuczciwego osiągnięcia zwycięstwa w partiach toczonych przez internet np. na platformie chess.com. Jest to oczywiście uznawane jako oszustwo i odpowiednio karane, także nie zachęcam do korzystania z oprogramowania w ten sposób.
Częstym problemem omawianym na naszych kursach z informatyki jest problem ośmiu hetmanów. Jest to ciekawy problem, który chciałbym po krótce omówić, gdyż jest on powiązany z tematem wpisu, oraz można go rozwiązać za pomocą algorytmu, co jest fajnym ćwiczeniem programistycznym. Jak dotąd, problemu tego nie było nigdy na maturze z informatyki, jednak nie jest pewne, czy się nie pojawi w przyszłym roku. Problem ten polega na rozstawieniu ośmiu hetmanów na szachownicy w taki sposób, aby wzajemnie się nie atakowały. Hetman jako figura szachowa porusza się w boki, do góry, do dołu, oraz po przekątnych. Ilość możliwych ustawień hetmanów na szachownicy po jednym w kolumnie to 16777216, czyli bardzo dużo. Zadaniem programu jest wyeliminowanie niepoprawnych ustawień i zostawienie tylko tych prawidłowych. Chcesz poznać więcej programistycznych ciekawostek? Zapraszam na nasz kurs!