Enfoques alternativos para la programación del motor de ajedrez


14

Hasta donde entiendo, a grandes rasgos, los motores de ajedrez funcionan de la siguiente manera:

  1. calcular todas las variaciones posibles (árbol de juego) hasta cierta profundidad
  2. evaluar la posición final en función de algunos criterios (material, actividad de la pieza ...)
  3. basado en esta evaluación, decida cuál es la mejor jugada

Entiendo completamente que para tener un motor eficiente hay formas de podar ciertas líneas, limitando la profundidad, etc. Pero esta no es mi pregunta.

La pregunta es: ¿Hay algún intento alternativo de programar un motor de ajedrez (no necesariamente fuerte, pero tampoco aleatorio) que no siga este esquema?


Botvinnik trató de podar el movimiento raíz haciendo que la computadora busque solo el mejor movimiento candidato. No ha habido un intento exitoso de esto, y el ajedrez es mejor para eso.
Fred Knight

Respuestas:


13

En los primeros años del ajedrez informático, las personas realmente intentaron enseñar ajedrez informático de la misma manera que lo hacen con los humanos, explicando conceptos estratégicos como una estructura de peones saludable o la iniciativa. Estos intentos se abandonaron pronto porque el método que describió fue mucho más exitoso.

Recientemente, ha habido otro intento de dejar que un motor se enseñe ajedrez a través del Aprendizaje profundo (probablemente alentado por el éxito de Go AI de Google ). Según el artículo al que me vinculé, tuvieron bastante éxito y lograron alcanzar la fuerza de mensajería instantánea.


1
Según tengo entendido, Alpha Go funciona exactamente como el OP descrito y solo la función eval de (2.) está basada / creada a través de Deep Learning. La otra respuesta parece estar de acuerdo.
Hermann Döppes

According to the article I linked to, they were quite successful and managed to reach IM strengthpero si lee el artículo original, verá que el artículo exageró mucho el éxito.
Salvador Dali

1
@ HermannDöppes No, AlphaGo se basa en la búsqueda de árboles de Montecarlo.
HelloWorld el

3

@Glorfindel no está mal, pero el enfoque de aprendizaje profundo del ajedrez es realmente un término elegante para el ajuste de parámetros en la programación de ajedrez.

El aprendizaje profundo permite que un motor de ajedrez aprenda una función de evaluación, algo generalmente escrito a mano por un programador. Durante un juego, funciona como un motor de ajedrez normal.

Otras posibilidades:

  • Programación de ajedrez GPU
  • Búsqueda de árboles en Montecarlo

La mayor parte de su respuesta debe ser un comentario en [Respuesta de Glorfindel] ( chess.stackexchange.com/a/16293/2789 . La parte que realmente aborda la pregunta consta de solo siete palabras, que no es suficiente para una respuesta. También , La "programación de ajedrez de GPU" es solo una forma de paralelizar cualquier algoritmo que de otro modo podría estar utilizando, por lo que no creo que sea realmente un "enfoque" en el sentido de que la pregunta está buscando, sino que es solo un método de implementación.
David Richerby

-2

¡Ciertamente! SI realmente solo quiere decir ... "en teoría, ¿hay otros métodos para codificar un motor de ajedrez?" ... ¡Entonces sí!

Por ejemplo ... uno podría almacenar una copia de cada posición posible en el ajedrez (un gran número, lo sé), y tener una evaluación para cada uno. Entonces, su respuesta a cualquier pregunta dada (es decir, "el mejor movimiento para las blancas en la posición X"), se conocerá de inmediato simplemente mirando ese tablero. ¿El estado actual del hardware de la computadora es tal que tenga sentido? Nah Pero no preguntaste eso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.