Esto no es real, solo imagina que esto sucede.
Computer A
es supercomputadora Puede calcular 30 capas de profundidad en 20 segundos.
Computer B
es supercomputadora Puede calcular 15 capas de profundidad en 20 segundos.
Juegan uno contra el otro ajedrez.
¿Estas 15 profundidades realmente importan? Supongo que dentro de estas 15 profundidades puede haber billones de formas de escapar de un jaque mate o capturar una pieza importante. Claro, Computer A
sabe más. Pero Computer B
es capaz de predecir el futuro bastante lejos también, en mi opinión, lo suficientemente lejos como para defenderse realmente bien.
engines
calculation
ply
RikTelner
fuente
fuente
Respuestas:
Sí, esas 15 profundidades son muy importantes.
Considere esta posición que ocurrió en el juego inmortal de Kasparov vs Topalov.
Probé esta posición con varios motores. Algunos motores, en la profundidad 15, no pudieron detectar que 24 ... cxd4 es un movimiento perdedor y pensaron que estaba ganando. Esos mismos motores, a mayor profundidad, jugaron el movimiento correcto 24 ... Kb6!
Por ejemplo, incluso un motor tan potente como Stockfish 4 inicialmente en la profundidad 21 piensa que el movimiento perdedor 24 ... cxd4 es correcto.
El mismo motor, cuando se mantiene encendido un poco más de profundidad, muestra 24 ... Kb6 en el movimiento correcto.
Fritz 11 SE, en profundidad 15, también falló. ¡Pero encontró el movimiento correcto en la profundidad 16!
Considere también este problema increíble como la posición que encontré aquí .
Stockfish no pudo encontrar la línea ganadora 1. ¡Be2 +! hasta la profundidad 31 y hasta entonces pensó que era un mal movimiento. Demuestro la victoria aquí. El punto es que las negras están en zugswang debido a amenazas de pareja y tienen que renunciar a la reina o mover un peón que permitiría a las blancas crear un peón pasado y ganar.
( 4 ... Dxe4 5. Cf6 + )
5. Cf4 Dg7 6. Cd3! Dxd4 7. c6! a5
( 7 ... Dxe4 8. NF2 + KF3 9. Cxe4 Kxe4 10. kg2 Rd4 11. g4 hxg4 12. h5 Re5 13. h6 Rf6 14. kg3 Rg6 15. Kxg4 Kxh6 16. Rf5 Rg7 17. Re6 Rf8 18. Rd7 Kf7 19. Kxc7 )
8. b5! a4 9. b6 cxb6 10. c7 Dxe4
( 10 ... Dc3 11. Cf2 # )
11. Cf2 + Kf3 12. Cxe4 1-0
Aquí está el registro del motor de Stockfish 4. Como puede ver, detecta que 1. Be2 + está ganando, ¡solo en la profundidad 31!
fuente
La relación entre las ganancias de rendimiento y la profundidad de búsqueda ha sido un área de investigación activa durante bastante tiempo en las comunidades de programación de ajedrez informático. Había una teoría de que los aumentos en la profundidad de búsqueda daban como resultado rendimientos decrecientes en la fuerza ... esto parecía ser verificado en resultados experimentales.
Desde mi perspectiva, hay una base intuitiva para esto. Imagine su combinación hipotética entre dos supercomputadoras, comenzando desde las posiciones de la tabla final del juego. La mayoría de las victorias forzadas en bases de tablas ocurren en un horizonte inferior a (por ejemplo) 50 capas. La mayoría de las posiciones restantes se dibujan, solo una pequeña fracción resuelve las victorias a mayor profundidad. Una computadora que busca a 100 capas tendría una ventaja limitada sobre una computadora de 50 capas, porque (como usted menciona) el programa más débil puede navegar a través de casi todas las líneas perdedoras, todo lo cual ocurre a una profundidad más limitada. Un programa de 50 capas en realidad tendría una ventaja mucho mayor sobre un programa de 25 capas ... al igual que un programa de 4 capas tendría una ventaja aún mayor sobre un programa de 2 capas.
Conocí este concepto por primera vez hace unos 15 años, en la serie de documentos sobre Pensamiento oscuro , experimentando en búsquedas profundas. Esta es una gran lectura si estás interesado en el ajedrez informático.
Aunque no pude encontrar una referencia en línea, hay un artículo del año pasado sobre este tema ...
Diogo R. Ferreira (2013). El impacto de la profundidad de búsqueda en la fuerza del juego de ajedrez. ICGA Journal, vol. 36, N ° 2
fuente
La pregunta es: ¿Te refieres a 15/30 capas de búsqueda exhaustiva, o una profundidad nominal / iteración de 15/30 de un motor de ajedrez moderno como Stockfish?
Si te referías a esto último, 15 capas no significa necesariamente mucho. Los motores de ajedrez modernos podan mucho y reducen los movimientos que supuestamente son malos, por lo que podría ser que un sacrificio que parece ser malo a primera vista, a una profundidad nominal / iteración de 15, en realidad solo se busque a una profundidad de, por ejemplo, 5-10. En la profundidad / iteración 30, el movimiento probablemente todavía se busca solo a una profundidad reducida, pero entonces podría ser una profundidad efectiva de 15-20, que podría ser suficiente para encontrar que el sacrificio es realmente bueno, y tan pronto como el motor descubre que el movimiento es prometedor, disminuirá la reducción, por lo que el movimiento se busca a una profundidad más cercana a 30 capas (o incluso más profundo debido a las extensiones y la búsqueda de reposo). Entonces, sí, creo que puede marcar la diferencia, incluso si la combinación está dentro del horizonte nominal de 15 capas.
Si te refieres a una búsqueda exhaustiva, entonces creo que un motor con una profundidad de 15 sería muy fuerte siempre que tenga una buena función de evaluación y algún tipo de búsqueda de reposo (después de dejar los nodos en la profundidad 15). Debido a los rendimientos decrecientes, creo que la ganancia al duplicar la profundidad sería mucho menor que la que obtendría por una combinación entre dos motores modernos con profundidad 15 frente a profundidad 30. Pero eso es, por supuesto, solo teórico, ya que una búsqueda exhaustiva para la profundidad 15 tomaría varios órdenes de magnitud más de lo que los motores suelen tomar para alcanzar la profundidad / iteración 15, por lo que tal experimento solo sería factible a profundidades más bajas.
fuente
FWIW Cuando el ARM era nuevo, escribí un programa de búsqueda exhaustiva ARM optimizado con una evaluación de posición solo material después de la capa 1.
Utilicé trucos con código de máquina optimizado, profundización iterativa, ventanas alfa-beta en movimientos ordenados (casi todas las posiciones tenían valor 0, por lo que obtuve una poda alfa-beta casi óptima), y tablas de hash que redujeron el factor de ramificación a mucho menos que el raíz cuadrada teórica para alfa-beta, típicamente alrededor de 4 en la peor parte del juego.
En una competencia contra los programas estándar en ese momento, mi programa E6P se colocó en posiciones terribles, pero con una búsqueda adicional o dos búsquedas exhaustivas en comparación con el software profesional en ese momento (es decir, típicamente búsqueda exhaustiva de 6 capas + inactiva en la peor etapa, con hasta 12 capas a medida que el juego se simplificaba), seguía escapándose de perder, a pesar de la confianza de sus oponentes. Casi todos los juegos fueron adjudicados después de muchas horas porque los programas opuestos en realidad no podían ganar.
Más tarde lo optimicé para StrongARM, donde se movió a 10 capas. Esta versión podría vencer fácilmente a todos los jugadores que no son ajedrecistas, aunque obviamente carecía de conocimiento de la estrategia, por lo que se aplica el famoso comentario: sí, son movimientos de ajedrez, ¡pero no es ajedrez!
Esto fue hace unos años, pero estoy tentado de intentar exhaustivamente nuevamente con una evaluación de posición más estratégica en la capa 1, y con un Intel XEON teóricamente 10,000-100,000x más rápido (y con 30k veces más memoria de tabla hash) que un 4MIPS ARM2 Bellota Arquímedes.
Es cierto que no es convencional, pero divertido de jugar.
fuente
+1 capa se estima + 55..70 ganancia de ELO (muchas investigaciones sobre este tema)
La cuestión es que todos estos "trillones" fueron calculados por A @ D = 30, y si A elige el movimiento con la evaluación ganadora, significa que calculó todos estos "trillones" y no importa cuál de los "trillones" se mueva. sigue ganando
fuente