Motore scacchistico

Da Wikipedia, l'enciclopedia libera.

Un motore scacchistico (o, con locuzione inglese ampiamente utilizzata, chess engine) è un programma informatico che può giocare a scacchi. Il motore può essere utilizzato per giocare contro un avversario (che può essere un umano, un altro motore oppure sé stesso), per analizzare una specifica posizione o per analizzare a posteriori un'intera partita già giocata. Sono disponibili motori commerciali, freeware e open source.

I moderni programmi di scacchi sono in grado di giocare con una tecnica analoga a quella di un grande maestro, mentre computer sviluppati appositamente sono in grado di battere anche i migliori giocatori di scacchi del pianeta. Nel 1997 il computer IBM Deep Blue in un torneo di 6 partite contro l'allora campione del mondo Garry Kasparov vinse tre partite, ne pareggiò una e ne perse due.

Un motore scacchistico è un esempio tipico di intelligenza artificiale debole.

Funzionamento[modifica | modifica wikitesto]

Un motore scacchistico è formato da tre componenti principali: la rappresentazione della posizione, l'algoritmo di ricerca e la valutazione della posizione.

La rappresentazione della posizione è il modo in cui il motore codifica al proprio interno la posizione sulla scacchiera: questo è in genere ottenuto attraverso un array, con varie codifiche possibili, mentre nei motori più vecchi era ottenuto semplicemente con una lista dei pezzi presenti e delle rispettive posizioni. Deve inoltre memorizzare il giocatore a cui spetta la prossima mossa, se sono possibili gli arrocchi e la cattura en passant e il numero di mosse necessario a far scattare la regola delle cinquanta mosse.

L'algoritmo di ricerca ha la funzione di analizzare le possibili mosse e sceglierne una. Tutte le possibili evoluzioni di una partita vengono rappresentate con un albero (informatica), e il motore vi naviga con algoritmi minimax: ogni mossa viene scelta in modo da ridurre al minimo il massimo dei vantaggi che l'avversario potrà conseguire. Per velocizzare tale procedura, e permettere una ricerca più approfondita nelle mosse più promettenti, vengono utilizzati algoritmi di "potatura" (come la potatura alfa-beta) che riducono il numero di mosse che vengono analizzate.

Poiché la ricerca non può arrivare fino allo scacco matto, è necessario che il motore possa valutare una posizione senza effettuare calcoli: tale valutazione si basa sia sul materiale presente nella scacchiera che su considerazioni posizionali (ad esempio la presenza di pedoni doppiati o passati), ed è espressa con un numero (positivo se la posizione è favorevole al Bianco, negativo in caso contrario) in cui un'unità corrisponde circa ad un pedone.

La mossa scelta viene comunicata in forma testuale, attraverso la notazione algebrica; se il programma è dotato di un'interfaccia grafica (GUI), può rappresentarla anche con il movimento del pezzo sulla scacchiera. Generalmente, l'interfaccia grafica è indipendente dal motore, e comunica con esso attraverso dei protocolli; in questo caso, un'interfaccia può supportare diversi motori, e viceversa un motore può essere utilizzato attraverso varie interfacce. Alcune fra le interfacce più diffuse sono XBoard/WinBoard per i sistemi Unix-like e Microsoft Windows, che usano l'omonimo protocollo di comunicazione, e Arena che usa il protocollo UCI (Universal Chess Interface).[1]

Nelle fasi iniziale e finale della partita, il motore può inoltre usare dei database che aumentano la sua forza di gioco.

In apertura viene usato un repertorio (libro delle aperture, in inglese opening book) ottenuto selezionando i tratti iniziali di un gran numero di partite. Spesso gli sviluppatori di un motore costruiscono un libro specifico per il loro programma; esistono anche libri non legati ad un particolare programma, che possono essere installati all'interno di un qualsiasi motore.

Nel finale, i motori usano le tablebase, che consistono in un elenco di posizioni, del risultato a gioco corretto (ovvero senza errori) e della mossa da effettuare in ciascuna posizione. Ad oggi (febbraio 2012) esistono tablebase che contengono tutte le posizioni con sei pezzi o meno (compresi i due re), anche se quelle a sei pezzi richiedono molto spazio per essere memorizzate, e quindi non vengono usate. In alternativa esistono le bitbase, che omettono la mossa corretta. Le tablebase più note sono quelle di Nalimov e le EGTB.

Ogni motore ha alcune opzioni che possono essere configurate, permettendo di ottenere uno stile di gioco più o meno aggressivo, oppure di diminuire la forza di gioco per adeguarsi al livello dello sfidante umano. È inoltre possibile variare le risorse hardware richieste dal programma, come l'ampiezza della memoria usata.

Forza di gioco[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svgLo stesso argomento in dettaglio: Graduatorie di motori scacchistici.

I motori scacchistici, al pari dei giocatori umani, sono classificati per forza di gioco ed hanno un proprio rating Elo, ottenute facendo giocare i motori l'uno contro l'altro con lo stesso hardware e, a volte, con lo stesso libro delle aperture. Esistono diverse classifiche, che si differenziano, oltre che per la configurazione hardware, anche per la cadenza di gioco.

Sebbene sia usato il punteggio Elo come per i giocatori umani, le classifiche dei motori e quella degli uomini non possono essere confrontate direttamente, in quanto non avviene alcuna "calibrazione" tra le due.

Rating list Cadenza di gioco
(mosse/minuti)
Anno
d'inizio
Ultimo aggiornamento Motori/Piattaforme
ammessi
Partite
giocate
I tre motori più forti Rating
CCRL[2] 40/40[3] 2005 11 gennaio 2017 1.813 681.664 Komodo 10.3 64-bit 4CPU
Stockfish 8 64-bit 4CPU
Houdini 5.01 64-bit 4CPU 1.6.3
3402
3391
3378
CEGT 40/20[4] 40/20[5] 2006 8 gennaio 2017 3365 991.575 Stockfish 8.0 x64 4CPU
Houdini 5.0 x64 4CPU
Komodo 10.2 x64 4CPU
3414
3380
3365
CSS[6] 10 min +
10 s per mossa
2001 18 marzo 2007 189 67.242 Rybka 2.2 mp 32-bit 2CPU
Deep Fritz 10 2CPU
Deep Shredder 10 2CPU
3008
2909
2891
SSDF[7] 40/120 + 20/60 1984 21 marzo 2013 353 138.040 Komodo 9.1 MP x64 2GB Q6600 2,4 GHz
Stockfish 6 MP x64 2GB Q6600 2,4 GHz
Deep Rybka 4 x64 2GB Q6600 2,4 GHz
3366
3335
3202
WBEC[8] 40/40 2001 22 settembre 2009 850+[9] 84,000+ Rybka 3-x64-2CPU
Naum 4.0-2CPU-x64
Thinker 5.4j-x64-2CPU
3090
3039
2994

Motori cloni[modifica | modifica wikitesto]

Alcuni motori, come Strelka ed Ippolit, vennero accusati di essere dei cloni di Rybka, ovvero di essere stati creati illegalmente, a partire da porzioni di codice ottenute, probabilmente, disassemblando e decompilando i binari di Rybka e risalendo, approssimativamente, al suo codice sorgente; gli autori di questi motori negarono, ad ogni modo, di aver clonato Rybka, ma la questione sull'argomento è tuttora aperta. Dopo l'uscita di Ippolit sono stati creati altri motori da esso derivati, quali Robbolito, IvanHoe, Fire ed altri, tutti molto forti. Molti di questi motori non vengono considerati nelle classifiche ufficiali, per la loro dubbia origine (i nomi di alcuni autori sono, inoltre, degli pseudonimi).
Anche l'autore di Rybka finì a sua volta sotto accusa perché sospettato di aver copiato dal codice di due motori open source (Fruit e Crafty), ma Vasik Rajlich smentì tutto dicendo che il suo codice era assolutamente originale.
Nel giugno 2011 la ICGA (International Computer Games Association) ha posto fine a quest'ultima diatriba, avendo ritenuto, dopo varie indagini, che Rybka è effettivamente un clone di Fruit e Crafty. Rybka è stato perciò squalificato a vita e bandito dalle competizioni organizzate dalla stessa ICGA. L'autore di Rybka, ovviamente, ha espresso il suo disaccordo, ma ha deciso di non difendersi dalle accuse e di non discutere la questione pubblicamente.
Inoltre anche l'autore di Houdini (fra i motori più forti attualmente in circolazione), che però non ha mai partecipato a competizioni ufficiali, ha ammesso di aver preso spunto dal codice di motori open source quali Ippolit/Robbolito e Stockfish, così come riportato nel suo sito ufficiale.
Alcuni motori cloni si sono così evoluti, che sono diventati dei prodotti commerciali di alto livello, come ad esempio lo stesso Houdini (dalla versione 2.0), Rybka (dalla versione 3) e Vitruvius (dalla versione 1.0).

Note[modifica | modifica wikitesto]

  1. ^ (EN) Tim Mann e H.G.Muller, Chess Engine Communication Protocol, su gnu.org. URL consultato il 28 settembre 2016.
  2. ^ CCRL 40/40 - Lista completa, su computerchess.org.uk, 6 marzo 2010. URL consultato il 13 gennaio 2017.
  3. ^ Disponibile anche: 40 mosse in 4 minuti
  4. ^ CEGT 40/20, Chess Engines Grand Tournament, 28 marzo 2010. URL consultato il 13 gennaio 2017.
  5. ^ Disponibile anche: 40 mosse in 4 minuti, 40 mosse in 120 minuti
  6. ^ Computerschach und Spiele - Eternal Rating, Computerschach und Spiele, 18 marzo 2007. URL consultato il 21 maggio 2008.
  7. ^ SSDF Rating List, SSDF, 26 settembre 2008. URL consultato il 13 gennaio 2017.
  8. ^ BayesianElo Ratinglist of WBEC Ridderkerk, su wbec-ridderkerk.nl. URL consultato il 20 luglio 2008.
  9. ^ http://home.scarlet.be/vincentlejeune/Ratings-WBEC-Ed-11-to-16.txt

Bibliografia[modifica | modifica wikitesto]

  • Ciancarini, Paolo. I giocatori artificiali. Milano, Mursia, 1992. ISBN 88-425-1319-9.
  • Hsu, Feng-hsiung. Behind Deep Blue : behind the computer that defeated the world chess champion. Princeton, Princeton University Press, 2002. ISBN 0-691-09065-3.
  • Opfermann, Hans Carl. Gli scacchi con il computer. Milano, Mursia, 1982.
  • Pachman, Ludek e Kuhnmund, Vas I. Computer chess. London, Routledge & Kegan, 1986. ISBN 0-7100-9785-9.

Collegamenti esterni[modifica | modifica wikitesto]

  • (EN) Jim Ablett's Winboard Chess Projects - Download di motori scacchistici free e open source compilati da Jim Ablett
  • (EN) WBEC Ridderkerk - Raccolta di motori freeware, nuovo rilasci, tornei, liste di rating e Forum di discussione
  • (EN) Chess Programming Wiki, su chessprogramming.wikispaces.com.
  • (EN) Talkchess - forum
  • (EN) CCRL - Rating dei principali motori scacchistici, mensilmente aggiornato
  • (EN) IPON - Rating dei principali motori scacchistici nelle varie versioni e per un solo tempo di gioco (5m +3s a mossa). Sempre aggiornato
  • (EN) CEGT - Rating dei principali motori nelle varie versioni e per i diversi tempi di gioco
  • (EN) ICGA - Sito ufficiale International Computer Games Association
Scacchi Portale Scacchi: accedi alle voci di Wikipedia che trattano di scacchi