Intelligenza artificiale
SGF ovvero Smart Game Format
Un passo fondamentale per lo sviluppo di un qualsiasi software di gioco è la definizione di uno "standard" di rappresentazione testuale di una partita, ovvero definire una codifica completa, flessibile, semplice per poter descrivere attraverso un file di testo una partita di gioco vero e tutte le possibili informazioni pertinenti. Si tratta di una scelta importante perchè su tale scelta verranno poi sviluppati i software per analizzare le partite, le interfacce informatiche per giocare, nonchè i software più specifici di analisi "scientifica", o meglio di Intelligenza Artifiicale (AI), delle partite.
Oggigiorno il formato di file utilizzato per registrare le partite di due giocatori di Go è lo "Smart Game Format", abbreviato SGF, (si tratta comunque di un formato che permette di registrare anche partite di altri giochi, quali Hex, Backgammon, ecc. ecc.) Attualmente la specifica dello standard di questo tipo di file è la FF[4], in attesa della definizione della specifica FF[5]. In questo articolo cercheremo di dare una descrizione di questo formato di file fino ai suoi massimi dettagli in modo tale che ciò possa essere utile sia a capire meglio lo standard (ed eventualmente i punti aperti migliorabili nelle versioni future) che offrire le competenze per eventualmente sviluppare un software in grado di analizzare questo tipo di file.
L' SGF fu inventato da Anders Kierulf nel 1987 ed è diventato sempre più popolare; questa prima versione è identificata come FF[1]. Due importanti sviluppi sono stati la revisione FF[3] dovuta a Matin Müller nel 1993 e che è stato il primo passo vero verso una standardizzazione dell' SGF. Nel 1997 Arno Halllosi ha dato vita alla revisione attualmente ufficiale, la FF[4].
La struttura base di un SGF è quella di un grafo a forma di albero, dove quindi ogni nodo ha esattamente un solo predecessore (il genitore) e uno o più successori (figli); in tal modo è possibile registrare una sequenza di mosse ed anche di varianti di gioco. Ad ogni nodo sono associate delle proprietà che contengono una certa informazione, come il colore del giocatore che ha fatto la mossa, dei commenti e altro. Chiaramente un SGF può essere modificato o aggiungendo/eliminando i nodi o le proprietà associate ad essi. Bisogna ricordarsi sempre che l'unità base è il nodo, di cui la mossa è una proprietà!