Perché i motori di scacchi a volte mancano delle buone mosse (o impiegano un'eternità a individuare)?


17

Non è la prima volta che trovo una mossa molto superiore rispetto al motore di scacchi, ci vogliono anche un po 'di tempo per capire queste mosse dopo averle fatte.

Ad esempio, la mossa 15 ... Bf2nel gioco qui sotto:

NN - NN, 0-1
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13. Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rg3 + 17. Kf5 Rxf3 + 18. Kg4 Rg3 + 19. Kf5 f6 20. d3 Kf7 0-1

La mossa rimane inosservata per un po 'dal motore, è solo quando mi muovo che inizia a vedere il resto dell'iceberg.

So che tutto dipende da quanto tempo dedichi ad analizzare, ma è inaccettabile che a volte gli umani riescano a trovare queste mosse in meno tempo dei computer.

  • Perché i motori di scacchi non riescono a individuare buone mosse in alcune posizioni? (Una volta ho letto qualcosa su un "effetto orizzonte", forse è correlato?)
  • Ci sono altri esempi notevoli? (ad es. questo famoso puzzle , i computer impiegano un po 'a risolversi)

Queste domande contengono informazioni utili per spiegare parzialmente alcuni fattori che potrebbero causare questa anomalia: quali algoritmi ed euristiche sono popolari negli scacchi per computer? , Quando si gioca un avversario al computer, quali situazioni dovrei creare per darmi una migliore possibilità di vincere? , Valutazioni al computer: quanto sono affidabili?

Note: La trappola è conosciuta come Fishing Pole , sono consapevole di aver perso un compagno in 3 (e un compagno in 7) :(, il limite di tempo per mossa era giorni (scacchi per corrispondenza) ma mi ci sono voluti 5-10 minuti per finire di calcolare tutto.


1
Molto interessante. Lo stoccafisso sul mio PC di potenza media non è stato trovato 15... Bf2dopo 5 minuti.
Tony Ennis,

... e ci sono voluti più di 7 minuti per trovare un compagno simile nella prossima mossa.
Tony Ennis,

20 d3 è un errore. prova 20 d4.
dcaswell,

1
Perché usi il linguaggio "inaccettabile" perché un essere umano trovi una mossa in meno tempo di un computer? Riesci a spacchettare i tuoi pensieri su questo?
Xonatron,

Ha perso molte mosse migliori. Perché individuarlo specificamente?
Yobamamama,

Risposte:


33

Perché i motori di scacchi non riescono a individuare buone mosse in alcune posizioni?

Il motivo sono chiamati tecniche di potatura diretta (vedi http://chessprogramming.wikispaces.com/Pruning ) con ProbCut in prima linea.

La mossa 15 ... Bf2 viene potata in profondità perché include il sacrificio 16.Rxf1 senza riguadagnare qualcosa di concreto con prove subito dopo. Il matenet è anche difficile da vedere, perché include qualche ulteriore mossa "silenziosa" come ad esempio 17 ... Ke7, e sì anche i motori, non solo gli umani hanno difficoltà a vedere mosse silenziose distanti poiché sono spesso potati.

In questo caso concreto non si può nemmeno dire che i motori non riescono a individuare buone mosse, perché anche la continuazione 15 ... Rh3h1 è una mossa molto buona e porta a una posizione assolutamente vinta.

Ultimo ma non meno importante, devi ricordare che la forza di un motore è sempre misurata in termini di forza eloquente e non nella capacità di trovare il modo più breve per vincere. Non importa se un motore vince in 8 mosse o in 25 mosse. Cercare troppo per la vittoria più breve significherebbe perdere tempo, perché la maggior parte del tempo non esiste affatto una buona mossa segreta. E la perdita di tempo danneggerebbe i motori ELO-Rating.


1
Bella risposta, benvenuta nel sito!
Andrew

+1 per menzionare il compromesso tra potatura e ricerca completa. Non sono affatto sorpreso che una combinazione 13+ PLY non sia stata trovata rapidamente. Il motore ha "cose ​​migliori da fare" che calcolare ogni possibilità a quella profondità.
Daniel B,

2
Bella risposta nel complesso. +1 per "Ultimo ma non meno importante che devi ricordare, che la forza di un motore è sempre misurata in termini di forza eloquente e non nella capacità di trovare il modo più breve per vincere"
ferit

Risposta eccellente.
Xonatron,

12

Ci sto provando con Houdini 1.5 (la versione gratuita). Inizialmente 15 ... Bf2 non compare nelle prime 5 mosse, quindi quando raggiunge la profondità 15, lo fa come # 1. Richiede circa 19 secondi sul mio computer di quattro anni, non così a lungo.

Quindi non manca di individuarlo, invece lo considera la mossa migliore una volta raggiunta la profondità 15. Apparentemente, fintanto che ha solo 14 strati di profondità, altre mosse sono migliori (come anche vincere 15 ... f5 +).

Apparentemente 15 ... Bf2 è un compagno in 8, che è 15 strati (8 mosse di nero, 7 di bianco). Ma all'inizio lo considera solo +10 o giù di lì, quindi +20, quindi si accoppia in 10, quindi si accoppia in 8.

Il compagno in 8 righe è:

NN - NN
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13. Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rh4 + 17. Kg5 Ke7 18. Rh1 Rxh1 19. Nc3 Rah8 20. Nd5 + cxd5 21. d3 R8h5 + 22. Kg4 R1h4 #.

Chiaramente quando Houdini 1.5 pensa a 15 strati in profondità, non considera tutte le possibili linee che sono 15 strati in profondità, o vedrebbe il compagno in 8 nel momento in cui terminava la sua ricerca in profondità a 15 strati.

Penso che sia a causa della potatura , smette di guardare alcune righe quando pensa che non siano abbastanza promettenti. In questo modo, può dedicare più tempo alle linee promettenti e il programmatore pensa che i professionisti superino i contro. Ma non ho una risposta in questo momento su ciò che decide di potare qui (probabilmente prende milioni di decisioni di potatura separate alla profondità 15).

Potrebbe avere a che fare con le mosse silenziose ... Ke7 e ... Rah8, due non-catture non-check in una linea in cui il nero è un pezzo in giù. È probabile che decida da qualche parte che non è utile continuare a cercare in questa linea. Solo più tardi, quando continua la linea e trova il compagno alla fine, fanno altre linee che prolungano il gioco (con 18.Rh1 Rxh1 e così via) quindi si presentano.

Ad ogni modo, è noto che non funziona così bene da far pensare un computer per alcuni secondi solo se si vuole arrivare in fondo a qualcosa, pochi minuti è meglio.


La mia ipotesi sul motivo per cui pota, è perché 16. Rxf1 sembra "euristicamente" non il re del grande bianco è fuori all'aperto, ma non c'è scacco matto immediato e il nero è un cavaliere per un pedone in materiale. Solo quando si verifica un'analisi più approfondita (come hai detto), il valore di questo "sacrificio" diventa chiaro.
Joe K

Si noti che "15 strati" significa che sono state osservate alcune mosse fino alla profondità 15, non tutte le mosse . Ciò richiederebbe un tempo di attesa superiore a 4 secondi, anche su un supercomputer.
BlueRaja - Danny Pflughoeft,

2

dopo aver letto tutte le risposte e altre fonti, ora capisco che non "mancano" o scelgono di perdere queste mosse, gli umani le hanno programmate in modo tale da seguire uno schema specifico su (dove / come / quando + a) cercare e, soprattutto, quando mettere in pausa la ricerca e cercare linee più promettenti per risparmiare risorse.

Ma dato abbastanza tempo, un computer finirà ogni possibile combinazione a una certa profondità.

TL; DR

  • Q1: non perdono mai le mosse, non le hanno ancora trovate
  • Q2: richiedono tempo perché sono programmati per risparmiare risorse e daranno la priorità ad alcune linee rispetto ad altre (ad esempio quelle che non hanno mosse passive o non recuperano materiale nelle prossime mosse).

-1

Penso che a tutti manchi un compagno molto più veloce. Quando si controlla la posizione con Houdini 3, il nero ha effettivamente compagno in 3 alla mossa 13. Invece di Bf1 +, il nero avrebbe dovuto giocare Bf2, e si contrappone a 14. d3 bf1 + 15. Bh6 Rxh6 #. Quindi, in una risposta insolita alla tua domanda, forse alcuni motori non hanno visto subito la tua mossa, ma, nel caso di Houdini 3, ha trovato un compagno molto più veloce.


5
Se leggi l'intera domanda vedrai che è a conoscenza del compagno in 3. Tutti i motori ragionevolmente nuovi troveranno immediatamente il compagno in 3, e non fa parte di ciò che viene chiesto qui.
Halvard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.