I primi programmi scacchistici, comparsi già agli albori dell'informatica, erano piuttosto rudimentali e si affidavano in concreto ad una ricerca sistematica di tutte le possibili continuazioni a partire da una data posizione dei pezzi sulla scacchiera. L'esame delle varianti, per ragioni di tempo di calcolo, veniva ovviamente limitato ad una determinata profondità di tratti (o semi-mosse), cioé mosse del Bianco o del Nero. Infatti, partendo da una posizione generica dei pezzi sulla scacchiera, è praticamente impossibile analizzare completamente tutte le possibili varianti fino al termine della partita per trovare la continuazione migliore che conduce matematicamente alla vittoria od alla patta, perché il numero di tratti da esaminare cresce con ritmo esponenziale. Consideriamo, per esempio, lo schieramento dei pezzi all'inizio di una partita. Il Bianco ha a sua disposizione 20 possibili tratti per cominciare la partita (16 mosse di Pedone e 4 mosse di Cavallo): a2-a3, a2-a4, b2-b3, b2-b4, ..., h2-h3, h2-h4, Cb1-a3, Cb1-c3, Cg1-f3, Cg1-h3 Ad ognuna di queste 20 semi-mosse del Bianco può seguire uno fra 20 possibili tratti di risposta del Nero: a7-a6, a7-a5, b7-b6, b7-b5, ..., h7-h6, h7-h5, Cb8-a6, Cb8-c6, Cg8-f6, Cg8-h6 In totale quindi ci sono 20 x 20 = 400 varianti possibili già per la prima mossa, ovvero per una profondità d'analisi di appena 2 semi-mosse. Il numero totale di varianti cresce in maniera incredibilmente rapida con l'aumentare della profondità d'analisi. Nella maggior parte delle posizioni, specialmente nelle fasi centrali della partita, ogni giocatore ha spesso ben più di 20 tratti a disposizione fra cui scegliere! Per questo motivo i programmatori si accorsero subito che analizzare tutte le possibili varianti (ovvero applicare il cosiddetto metodo brute force) implicava dover limitare drasticamente la profondità d'analisi, al fine di rendere accettabili i tempi di calcolo del computer. Ma limitare la profondità d'analisi porta ad un altro grosso problema. Se il computer si limita ad analizzare le varianti con una profondità, per esempio, di 6 semi-mosse, potrebbe raggiungere al termine di una variante una posizione sulla scacchiera apparentemente favorevole col risultato di giudicare positivamente tale variante, mentre in realtà dopo qualche altra semi-mossa la posizione potrebbe rivelarsi perdente, magari a causa di una combinazione avversaria. Questo problema viene definito dai programmatori scacchistici come effetto orizzonte: il computer riesce a vedere le varianti solo fino ad una certa profondità d'analisi prefissata. Per minimizzare le conseguenze negative dell'effetto orizzonte bisogna aumentare la profondità d'analisi delle varianti. Ma aumentare la profondità d'analisi comporta tempi di calcolo lunghissimi anche per profondità di appena 12-16 tratti, perfino con i computer attualmente più veloci. Pertanto è sorta la necessità di diminuire in qualche modo il numero di varianti da analizzare, rinunciando al metodo brute force. Al pari dei giocatori umani, i programmi moderni di scacchi analizzano in prima approssimazione tutte le mosse possibili, eliminando successivamente quelle meno significative per concentrarsi su quelle più promettenti. Solo queste ultime vengono esaminate in profondità, al fine di ridurre al minimo i tempi di calcolo. Questa strategia di elaborazione è definita con il termine di metodo selettivo. S'intuisce facilmente che la forza di un moderno programma di scacchi, a parità di computer, si basa sulla bontà dei criteri di selezione delle varianti. Una selezione troppo ristretta delle varianti potrebbe far perder al computer l'occasione di esaminare una variante vincente, viceversa una scarsa selezione potrebbe far sprecare prezioso tempo di elaborazione nell'esame di varianti poco interessanti. I criteri di selezione si basano in larga parte sulle comuni conoscenze tattico-strategiche dei giocatori umani, codificate e tradotte nel linguaggio binario dei computer. Tuttavia non sempre è facile tradurre queste conoscenze in algoritmi di gioco. In particolare tutti i programmi di scacchi si mostrano deboli nel trattamento del finale, in cui conta pesantemente la strategia, molto più difficile da tradurre nel linguaggio dei computer rispetto alla tattica. Essendo strategicamente deboli nel finale, i programmi più forti in circolazione si affidano ad appositi database sui finali (tablebase) che contengono le migliori varianti già precalcolate con il metodo brute force, ma soltanto per alcuni casi abbastanza semplici. Oggi come oggi si hanno database completi che trattano tutti i finali con un massimo di 5 pezzi sulla scacchiera e qualche finale con 6 pezzi. Con questi database i computer sono in grado di giocare in maniera esatta il finale, purché esso rientri in uno dei casi citati.Tuttavia nei casi di finale con più di 6 pezzi talvolta anche i migliori programmi in commercio mostrano palesemente i loro limiti, dato che non hanno a disposizione alcun database con varianti precalcolate e devono quindi calcolare sul momento la mossa da giocare. Nel diagramma sottostante possiamo, appunto, osservare una posizione che crea notevoli difficoltà ai computer: Studio di G.N.Zachodjakin, 1930![]() Il Bianco, nonostante l'incombente promozione del Pedone nero, si salva così: 1 g7+, ...
|
![]() ![]() ![]() ![]() | ![]() |