Un motore scacchistico, o chess engine, è un software progettato per giocare a scacchi con un livello di abilità in grado di superare persino i migliori grandi maestri. A ogni mossa, questi programmi valutano le posizioni sulla scacchiera e decidono la mossa migliore da compiere utilizzando complessi algoritmi di intelligenza artificiale. I motori scacchistici combinano tre componenti fondamentali: la rappresentazione della posizione, l’algoritmo di ricerca e una funzione di valutazione. Il loro obiettivo principale è calcolare la sequenza ottimale di mosse, basandosi su analisi che includono migliaia di posizioni in pochi secondi. Negli ultimi anni, i motori hanno compiuto un salto di qualità con l’introduzione delle reti neurali profonde, che simulano un ragionamento più vicino a quello del cervello umano.
Il primo motore a battere il campione del mondo di scacchi è stato Deep Blue della IBM, che nel 1997 ebbe la meglio sull'allora numero uno al mondo Garry Kasparov su un match di 6 partite. I motori scacchistici però non giocano soltanto partite: possono anche analizzare mosse e strategie, aiutando i giocatori a migliorare il proprio gioco o scoprire nuovi approcci con cui affrontare gli avversari futuri. C'è da dire anche che il loro utilizzo ha sollevato questioni etiche, dovuto in parte all'uso improprio usato da alcuni “giocatori” per imbrogliare durante le partite online. Al contempo, i motori scacchistici hanno dato vita a competizioni tra macchine, trasformando il mondo degli scacchi in un campo dove la tecnologia e la tradizione scacchistica si “fondono” insieme.
Cosa c'è dietro un motore scacchistico
Ma esattamente cosa c'è dietro un motore scacchistico? Come funziona il suo algoritmo? I motori scacchistici codificano le posizioni della scacchiera usando rappresentazioni digitali, spesso tramite una “bitboard”, dove ogni bit corrisponde a un pezzo oppure a un casella della scacchiera e registra informazioni cruciali come il tratto (chi deve muovere), le possibilità di arrocco e altre regole, come la cattura en passant. Con queste informazioni, il motore costruisce una visione completa della partita, che può essere quindi analizzata valutando le situazioni di gioco e guardando in profondità nelle partite.
La funzione di valutazione, o euristica, assegna un punteggio numerico a ogni posizione. Questo punteggio riflette il vantaggio o lo svantaggio di una parte in base a fattori come il materiale (valore dei pezzi), la sicurezza del re e il controllo del centro della scacchiera. Tradizionalmente, queste funzioni si basano sulla conoscenza umana del gioco. Tuttavia, negli ultimi anni, tecniche di apprendimento automatico hanno permesso ai motori di sviluppare criteri di valutazione più sofisticati, spesso superando le intuizioni umane.
I motori utilizzano anche strumenti aggiuntivi come i libri di apertura e le tablebase: i primi sono raccolte di mosse iniziali tratte da partite reali, che aiutano il motore ad aprire la partita per partire con un vantaggio strategico; le seconde, invece, contengono tutte le combinazioni possibili per posizioni con pochi pezzi, offrendo soluzioni perfette nelle fasi finali di gioco.
Oltre a valutare le dinamiche di gioco, i migliori motori scacchistici presenti sulla piazza provano a guardare in profondità nelle partite, proprio come farebbe un buon giocatore di scacchi. Più sarà profonda la visione di gioco, migliore è la mossa che possono prendere in un dato momento. Per determinare quanto è profonda la visione di gioco di un algoritmo (o di un giocatore), si tiene conto del cosiddetto “ply” (o “strato”) che, per semplificare brutalmente, è costituito da due mosse (la propria e quella avversaria). Riguardo a questo aspetto, un interessante articolo presente su Chess.com (un punto di riferimento per tutti gli appassionati di scacchi online), dedicato proprio ai motori scacchistici, afferma:
A 20 ply (10 mosse bianche e 10 mosse nere), la maggior parte dei motori sta già valutando molto più in profondità e più forte degli umani. A seconda del tempo concesso e della complessità della posizione, i motori possono guardare più di 50 ply in profondità.
Alcuni motori moderni, inoltre, come AlphaZero (di Google DeepMind) e Leela Chezz Zero, si basano su reti neurali profonde o NN (Neural Network). Questi sistemi apprendono le migliori mosse giocando milioni di partite contro sé stessi (oppure vengono addestrati dando in pasto al loro algoritmo dei dati di addestramento, ovvero partite di scacchi (in molti casi, quelle giocate dai Gran Maestri). Una volta fornito il materiale di addestramento, l'algoritmo impara da solo come approcciarsi alle partite, merito della sua capacità di apprendimento automatico o machine learning.
I motori “tradizionali”, come Stockfish, hanno solitamente usato quella che viene definita la ricerca minimax alfa-beta (AB), che va a valutare le migliori mosse possibili in un dato momento. I motori NN, invece, adoperano la cosiddetta ricerca ad albero Monte Carlo o MCTS, dove l'algoritmo gioca un numero elevato di partite rapide contro sé stesso a velocità elevatissime e con mosse casuali, andando poi a scegliere le mosse che gli sembrano avere più probabilità di vittoria.
Per ottimizzare tutte queste analisi, gli algoritmi applicano anche una tecnica nota come “potatura”, che elimina i passaggi svantaggiosi. In questo modo, il motore può concentrarsi sulle opzioni più promettenti, riducendo il numero di calcoli necessari e al tempo stesso non andando compromettere la qualità delle mosse stesse.
Quando sono nati i motori scacchistici
Come probabilmente saprete, gli scacchi sono un gioco antichissimo (si dice che siano nati in India intorno al VI secolo d.C.). I motori scacchistici non sono altrettanto datati, ma probabilmente vi sorprenderete nello scoprire che già nel 1796 fu ideata una finta macchina per giocare a scacchi – si chiamava Automaton – e il suo “algoritmo” era in realtà un bravo giocatore di scacchi umano nascosto al suo interno. Oltre un secolo più tardi, nel 1912, venne effettivamente sviluppata una macchina che era in grado di dare scacco matto con un re e una torre contro il re avversario. Ma fu solo nel 1951 che un certo Alan Turing scrisse un programma per computer che potesse a tutti gli effetti giocare a scacchi.