La profondità (numero di strati) importa ancora quando è abbastanza alta?


10

Questo non è reale, immagina che questo accada.

Computer Aè un supercomputer. Può calcolare 30 strati di profondità in 20 secondi.

Computer Bè un supercomputer. Può calcolare 15 strati di profondità in 20 secondi.

Giocano uno contro l'altro.

Queste 15 profondità contano davvero? Immagino che in queste 15 profondità ci possano essere trilioni di modi per sfuggire a uno scacco matto o catturare un pezzo importante. Certo, ne Computer Asa di più. Ma Computer Bè in grado di prevedere il futuro abbastanza lontano, secondo me, abbastanza lontano da difendersi davvero bene.


In questo caso, per "profondità" intendi il numero di strati? Saluti.
Rauan Sagit

Sì, intendo le pieghe.
RikTelner

Risposte:


13

Sì, quelle 15 profondità contano moltissimo.

Considera questa posizione che si è verificata in Immortal Game vs Topalov di Kasparov .

Kasparov - Topalov

Ho provato questa posizione con diversi motori. Alcuni motori, alla profondità 15, non sono riusciti a rilevare che 24 ... cxd4 è una mossa perdente e hanno pensato che stesse vincendo. Quegli stessi motori, a una profondità maggiore, hanno giocato la mossa corretta 24 ... Kb6!

Ad esempio, anche un motore potente come Stockfish 4 inizialmente alla profondità 21 pensa che la mossa persa 24 ... cxd4 sia corretta.

Stockfish DD 64 SSE4.2: 24...cxd4 25. Re7+ Kb6 26. Qxd4+ Kxa5 27. Qc3+ Kb6 
28. Qd4+ Qc5 29. Qxf6+ Bc6 30.Qxc6+ Qxc6 31. dxc6 Rd1+ 32. Ka2 f5 33. c7 Rc8 
34. Rxh7 Rxc7 35. Rh6 Rc6 36. g4 f4 37. g5 Rd2 38. c3 Rxc3 39. Rxg6+ Kc5 
40. Bg4 Rcc2 41. Rxa6 Rxb2+ 42. Ka1 Rbc2 43. Kb1 
(-1.45/21)

Lo stesso motore, se mantenuto acceso per un po 'più di profondità, mostra 24 ... Kb6 con la mossa corretta.

Stockfish DD 64 SSE4.2: 24...Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 
28. axb4 Rhe8 29. Rxe8 Rxe8 30. Nb3 Re1+ 31. Kb2 Re2 32. Rxh7 Nxb4 
33. Kc3 Nd5+ 34. Kd3 Rxh2 35. Rh4 Ne7 36. Nd4 Nc6 37. Nxc6 Bxc6 38. f4 Kc5 
39. Be6 Rxh4 40. gxh4 Bd5 41. f5 gxf5 42. Bxf5 a5
(-0.78/26)

Anche Fritz 11 SE, alla profondità 15, fallì. Ma ha trovato la mossa corretta alla profondità 16!

Fritz 11 SE: 24... cxd4 25. Qxd4+ Qb6 26. Re7+ Nd7 27. Qe5 f6 28. Qc3 Qg1+ 
29. Ka2 Bxd5+ 30. Nb3 f5 31. Qc7+ Ka8 32. Rxd7 Rxd7 33. Qxd7 Bxf3 34. Qd6 Qa7  
(-1.44/15) 

Fritz 11 SE: 24... Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 28. axb4 Nxb4 
29. Nb3 Bd5 30. Rf6+ Nc6 31. Nd4 Rdf8 32. Rd6 Kc5 33. Rxc6+ Bxc6 34. Ne6+ Kd6 
35. Nxf8 
(-0.59/16)

Considera anche questo incredibile problema come la posizione che ho trovato qui .

Lo stoccafisso non è riuscito a trovare la linea vincente 1. Be2 +! fino alla profondità 31 e fino ad allora ha pensato che fosse una mossa sbagliata. Dimostro la vittoria qui. Il punto è che il Nero è in Zugswang a causa delle minacce di accoppiamento e deve rinunciare alla regina o spostare una pedina che consentirebbe al Bianco di creare una pedina passata e vincere.

NN - NN, 1-0
1. Be2 +! Kf5 2. Nd5! Qxe6 3. Bd3 + Kg4 4. Be4 !! Qh6
( 4 ... Qxe4 5. Nf6 + )
5. Nf4 Qg7 6. Nd3! Qxd4 7. c6! a5
( 7 ... Qxe4 8. Nf2 + Kf3 9. Nxe4 Kxe4 10. Kg2 Kd4 11. g4 hxg4 12. h5 Ke5 13. h6 Kf6 14. Kg3 Kg6 15. Kxg4 Kxh6 16. Kf5 Kg7 17. Ke6 Kf8 18. Kd7 Kf7 19. Kxc7 )
8. b5! a4 9. b6 cxb6 10. c7 Qxe4
( 10 ... Qc3 11. Nf2 # )
11. Nf2 + Kf3 12. Nxe4 1-0

Ecco il log del motore di Stockfish 4. Come puoi vedere, rileva che 1. Be2 + sta vincendo, solo alla profondità 31!

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2.Bc4 c6 3. Ne2 Qf6 4. Kg2 Kg4 5. Nf4 Qxd4 
6. Bd3 Qe3 7. Be2+ Kf5 8. Bf3 Qd2+ 9. Kh3 Qxb4 10. e7 Qe1 11. Ne2 Qf1+ 12. Kh2 Qf2+
13. Kh3 Qe3 (-1.05/22) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. Bxa6 Qxe6 5. Bd3+ Kf6 
6. Nf4 Qe1 7. d5 Qxb4 8. dxc6 Qxc5 9. Be4 Ke7 10. c7 Kd7 11. Nd5 Kd6 12. Kh3 Qc4 
13. Bg2 Qg4+ 14. Kh2 Qc8 15. Be4 (-1.15/26) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. d5 cxd5 5. Bxd5 Qb2 
6. Bc4 Kf6 (-1.01/28) 

Stockfish DD 64 SSE4.2:  1. Be2+ Kf5 2. Nd5 Qxe6 3. Bd3+ Kg4 4. Be4 Qh6 5. Nf4 Qf6 
6. Nd3 Qxd4 7. c6 Qxe4 8. Nf2+ Kf3 9. Nxe4 Kxe4 10. Kg2 Ke5 11. Kf3 Kf5 12. g4+ Kf6
13. gxh5 Kg7 14. Kf4 Kf6 15. h6 Kg6 16. h5+ Kh7 17. Kg5 Kg8 18. h7+ Kxh7 19. Kf5 Kg7
20. Ke6 Kh6 21. Kd7 Kxh5 22. Kxc7 Kg5 23. Kd7 (6.06/31) 

Intendo 15 mosse per ogni singola mossa. Non solo all'inizio.
RikTelner

4
Sì, ad ogni mossa. Se, alla prima mossa, calcola alla profondità 15 e fa un errore, quindi il calcolo di 15 profondità ad ogni mossa successiva non lo salverà.
Wes

5

La relazione tra guadagni prestazionali e profondità di ricerca è stata per molto tempo un'area attiva di ricerca nelle comunità di programmazione di scacchi per computer. Esisteva una teoria secondo cui l'aumento della profondità della ricerca comportava una riduzione dei rendimenti della forza ... questo sembrava essere verificato in risultati sperimentali.

Dal mio punto di vista, c'è una base intuitiva per questo. Immagina la tua ipotetica corrispondenza tra due supercomputer, partendo dalle posizioni di base del tavolo finale. La maggior parte delle vincite forzate nei tavoli è avvenuta a un orizzonte inferiore (ad esempio) a 50 strati. La maggior parte delle posizioni rimanenti sono disegnate, solo una piccola frazione decide di vincere a una profondità maggiore. Un computer che cerca a 100 strati avrebbe un vantaggio limitato rispetto a un computer a 50 strati, perché (come dici tu) il programma più debole è in grado di navigare attraverso quasi tutte le linee perdenti, tutte a profondità più limitata. Un programma a 50 strati avrebbe effettivamente un vantaggio molto maggiore rispetto a un programma a 25 strati ... così come un programma a 4 strati avrebbe un vantaggio ancora maggiore rispetto a un programma a 2 strati.

Mi sono imbattuto per la prima volta in questo concetto circa 15 anni fa, nella serie di articoli su Dark Thought , sperimentando ricerche approfondite. Sono un'ottima lettura se sei interessato agli scacchi al computer.

Anche se non sono riuscito a trovare un riferimento online, c'è un documento dello scorso anno su questo argomento ...

Diogo R. Ferreira (2013). L'impatto della profondità di ricerca sulla forza del gioco degli scacchi. ICGA Journal, vol. 36, n. 2


2

La domanda è: vuoi dire 15/30 strati di ricerca esaustiva, o una profondità / iterazione nominale di 15/30 di un moderno motore di scacchi come lo stoccafisso?

Se intendevi quest'ultima, 15 strati non significano necessariamente molto. I moderni motori di scacchi potano pesantemente e riducono le mosse che sono presumibilmente sbagliate, quindi potrebbe essere che un sacrificio che sembra essere cattivo a prima vista, a una profondità / iterazione nominale di 15, sia effettivamente cercato solo ad una profondità, ad esempio, 5-10. Alla profondità / iterazione 30, la mossa probabilmente è ancora cercata solo a una profondità ridotta, ma potrebbe essere una profondità effettiva di 15-20, che potrebbe essere sufficiente per scoprire che il sacrificio è effettivamente buono e non appena il motore scopre che la mossa è promettente, diminuirà la riduzione, in modo che la mossa venga cercata a una profondità più vicina a 30 strati (o anche più a causa delle estensioni e della ricerca di quiescenza). Quindi sì, penso che possa fare la differenza, anche se la combinazione è all'interno dell'orizzonte nominale di 15 strati.

Se ti riferissi a una ricerca esaustiva, penso che un motore con una profondità di 15 sarebbe molto forte a condizione che abbia una buona funzione di valutazione e una sorta di ricerca di quiescenza (dopo i nodi di partenza alla profondità 15). A causa dei rendimenti decrescenti, penso che il guadagno raddoppiando la profondità sarebbe molto inferiore a quello che otterresti per una partita tra due motori moderni con profondità 15 contro profondità 30. Ma questo è ovviamente solo teorico, dal momento che una ricerca esaustiva per la profondità 15 richiederebbe parecchi ordini di grandezza più lunghi di quanto i motori normalmente impiegano per raggiungere la profondità / iterazione 15, quindi un simile esperimento sarebbe fattibile solo a profondità inferiori.


0

FWIW Quando l'ARM era nuovo, ho scritto un programma di ricerca esaustiva ARM ottimizzato con una valutazione della posizione solo materiale dopo lo strato 1.

Ho usato trucchi con codice macchina ottimizzato, approfondimento iterativo, windowing alpha-beta su mosse ordinate (quasi tutte le posizioni avevano valore 0, quindi ho ottenuto una potatura alpha-beta quasi ottimale) - e tabelle hash che hanno ridotto il fattore branch a molto meno del radice quadrata teorica per alpha-beta, in genere circa 4 nella parte peggiore del gioco.

In una competizione contro i programmi standard dell'epoca, il mio programma E6P è arrivato in posizioni terribili, ma con una ricerca extra o due ricerche esaustive rispetto al software professionale dell'epoca (cioè in genere 6 ricerche esaustive + quiescenti nella fase peggiore, con fino a 12 strati con la semplificazione del gioco), continuava a contorcersi per perdere effettivamente, nonostante la fiducia dei suoi avversari. Quasi tutte le partite sono state giudicate dopo molte ore perché i programmi avversari non potevano effettivamente vincere.

Successivamente l'ho ottimizzato per StrongARM, dove è passato a 10 strati. Questa versione poteva facilmente battere tutti i giocatori senza scacchi, anche se ovviamente mancava di consapevolezza della strategia, quindi si applicava il famoso commento: sì, sono mosse di scacchi - ma non sono scacchi!

Questo è successo un po 'di anni fa, ma sono tentato di riprovare esaustivamente con una valutazione della posizione più strategica a ply 1 - e con un Intel XEON teoricamente 10.000-100.000x più veloce (e con 30k volte più memoria della tabella hash) di un 4MIPS ARM2 Acorn Archimedes.

Certo, non mainstream, ma divertente da giocare.


-2

+1 strato è stimato + 55..70 Guadagno ELO (molte ricerche su questo argomento)

Immagino che in queste 15 profondità ci possano essere trilioni di modi per sfuggire a uno scacco matto o catturare un pezzo importante.

Il fatto è che tutti questi "trilioni" sono stati calcolati da A @ D = 30, e se A sceglie una mossa con valutazione vincente, significa che ha calcolato tutti questi "trilioni" e indipendentemente da quale dei "trilioni" si muove risposta dell'avversario - mossa sta ancora vincendo


Benvenuti nella discussione. Hai qualcosa per dimostrare la tua affermazione? Non penso che ci sia una relazione concreta.
SmallChess,
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.