Newsgroup: it.comp.ia
Titolo: Voglio scrivere un motore per giocare a scacchi...

Salve a tutti,
la mia idea è quella di scrivere un motore per WinBoard, in pratica un 
programma che giochi a scacchi. Vorrei qualche dritta sugli algoritmi da 
implementare per la selezione delle mosse, sulla loro valutazione e sulla 
possibilità di inserire in un "log" le varianti negative che hanno portato 
ad una sconfitta in modo che tale errore non possa più ripetersi. Premetto 
che non so assolutamente nulla di IA, ma so programmare in C, studio 
ingegneria elettronica e so giocare mediamente a scacchi...cmq ho tanta 
voglia di imparare. Mi potreste suggerire dei link dove poter reperire 
materiale utile? Ringrazio tutti per l'attenzione.
Saluti
Francesco

ad una sconfitta in modo che tale errore non possa più ripetersi.
Ti ho allegato nella risposta via mail del materiale che credo possa
interessarti.
Augusto Pucci ( 
http://www.prospektiva.it/webmaster/
 )
Webmaster di Prospektiva On-line
http://www.prospektiva.it
Webmaster di 
CO.DI.CI
. Siena
http://codici.supereva.it

>>> 
www.gsei.org
 <<<<
E' il punto di riferimento dei programmatori italiani nella computer chess (c'e'
una mailing list molto proilifica).
Attualmente sta per disputarsi il primo campionato italiano tra Engines (si
terra' a Pisa tra poche settimane).
Sul gruppo sono tutti disponibilissimi e ci sono consigli tecnici a tutti i
livelli (calcola che qui in Italia ci stanno degli engines che nelle partite
standard sono valutati con circa 2200/2300 elo, insomma per nulla male!).
Se giochi su FICS c'e' anche un canale italiano tutto sulla programmazione
scacchistica [il numero 166] (se non sai cos'e' Fics, vai qui
www.freechess.org
 )  il mio handle li' e' AsimovZZ.
Poi ci stanno anche il winboard forum e anche il forum sulla ComputerChess
sempre nelle maggiori gerachie di Usenet (in inglese ovviamente) dove puoi
trovare una miriade di Faq di altissimo livello qualitativo. Cmq gia' su sito
del G6 c'e' parecchio materiale da cui attingere, senza contare che sulla
mailing list ti aiutera'.
Scrivero' molti post riguardo ad alcuni messaggi che ho letto  su Deep Blue...
Ma volevo subito ribadire che l'approccio di programmazione usato oggi per
scrivere Engines scacchistici, e' molto piu' vicino ai sistemi esperti,
piuttosto che una qualche sorta di vera implementazione di IA nel senso classico
(mi si potrebbe obiettare dicendo che anche i sistemi esperti forse sono
riconducibili alla IA... il discorso e' lungo, ovviamente). Anzi, non penso di
sbilanciarmi dicendo che chi programma engines scacchistici non ha alcun
interesse a sviluppare l'auto-apprendimento (tranne rarissimi casi in cui per
esempio gli engines si construscono da soli i books di apertura in base alle
partite da loro giocati... ma e' una cosa molto limitata).
Ritornero' cmq su questi argomenti, ora purtroppo non ho il tempo per
approfondire il mio pensiero.
--
_________________________________
                 -=B A r r Y Z=-
Godeliano per natura,
         Cartesiano per scelta.
              -[icq UIN 7098241]-
_________________________________

partite da loro giocati... ma e' una cosa molto limitata).
Concordo, del resto gia' il confronto fra sistemi come quello di
Samuel per la dama e i successivi hanno dimostrato come i parametri da
tener presenti nella valutazione delle scacchiere siano piuttosto
limitati e l'assegnazione di "pesi" a tali parametri puo' essere
meglio effettuata su consiglio di uno o piu' giocatori esperti che
tramite tecniche di auto-apprendimento.
Per quanto riguarda le aperture.. bhe anche su quello non sarei tanto
convinto dell'utilita' di un sistema di costruzione just in time del
libro di aperture.. voglio dire mi sembra molto meglio optare per un
archivio realizzato a partire dalle serie storiche di partite (per il
caso della dama non si usano piu' nemmeno i libri di apertura perche'
le milgiori aperture sono state individuate da anni.. dunque si
preferisce optare per lk'estrazione casuale delle prime mosse).
Al momento credo che anche il livello di ottimizzazione degli
algoritmi di ricerca sia arrivato al suo limite fisiologico.
Non con questo voglio dire che non si possano ottimizzare
ulteriormente.. ma non credo che assisteremo a grandi balzi in avanti
come in passato..come epr esempio e' stato il passaggiod alla semplice
mini-max all' alpha-beta.
Del resto gli algoritmi attualmente usati sono tutti piu' o meno
varianti di alpha-beta..alcuni dei quali (come la principal variation
search) si rivelano migliori di alpha-beta solo in casi particolari.
Tentativi sono stati fatti anche per la classe di algoritmi con
gestione esplicita della memoria..ma con risultati generalmente
piuttosto scadenti.
In altre parole a mio parere, il settore dei giochi su scacchiera si
sta dirigendo piu' sulla strada del miglioramento dell'hardware che
degli algoritmi... salvo naturalmente miglioramenti secondari di
algoritmi gia' noti (ad esempio la trasposition table combinata con
algoritmi di ricerca di tipo B).
