Cómo encontrar la cantidad mínima de pasos necesarios para eliminar todos los peones del tablero de ajedrez

Podemos aprovechar las pequeñas limitaciones y utilizar una búsqueda de Breadth-First.

En cualquier momento, queremos saber dónde está el caballero y qué peones aún no se han eliminado. Hay 8 * 8 posiciones posibles para el caballero y podemos usar una máscara de bits de bits P para representar si el peón ya estaba eliminado.

Entonces, a lo sumo [matemática] 8 ^ 2 \ veces 2 ^ P [/ matemática] estados posibles. En cada estado, intentamos hacer los (hasta) 8 saltos posibles de caballeros.

Comenzamos en la posición inicial del caballero y una máscara de bits con bits P establecidos en 1. Si visitamos una posición con un peón, lo eliminamos al establecer el bit correspondiente en 0. Terminamos cuando la máscara de bits es igual a 0, lo que significa que todos los peones fueron eliminados

Por lo tanto, hacemos operaciones [matemáticas] O (8 ^ 3 \ veces 2 ^ P) [/ matemáticas]. Cuando P = 8, esto produce ~ 131072 operaciones, que es bastante pequeño.

Esquema de solución de programación dinámica:

  1. Un camino de solución termina en un peón
  2. (Opcional) Una ruta de solución comienza en el caballero
  3. Calcule el conjunto de peones únicos alcanzables en n movimientos desde cada casilla.

A primera vista, parece un problema trval de vendedor, que es bien conocido como NP completo. Tal vez una mirada más cercana podría demostrar que estoy equivocado, pero tengo la fuerte sensación de que no lo hará.

Por otro lado, encontrar algo heurístico que dé un resultado no tan malo (pero tal vez no se demuestre que es mínimo) no debería ser demasiado difícil. Algo así como que el caballero siempre va al peón más cercano, la parte difícil es que “el más cercano” no necesariamente significará simplemente contar la distancia, sino que tal vez realmente mueva al caballero a cierta profundidad hasta que tome un peón. Es bastante fácil demostrar que cualquier peón puede estar como máximo a 7 movimientos de caballero de distancia.

Lo que no es obvio es que el mejor camino siempre tomaría el peón más cercano, puede ser mejor tomar uno más lejos que ayudará en la próxima toma.