¿Cuáles son las técnicas que uno puede usar para mantener todas las piezas en un tablero? Es como un problema de n-queen
¿Es una combinación de n-queen
¿Cuáles son las técnicas que uno puede usar para mantener todas las piezas en un tablero? Es como un problema de n-queen
¿Es una combinación de n-queen
Respuestas:
Para abordar la edición a la pregunta Si está recibiendo las piezas en un orden aleatorio y no tiene ninguna información sobre piezas futuras, la forma de organizar las piezas sería darles la menor cantidad de alcance. Por ejemplo, si recibiera una reina en el primer turno, la colocaría en una de las cuatro esquinas. Algunas reglas más serían mantener a los caballeros cerca uno del otro y los peones apilados uno encima del otro. Todas estas estrategias son un poco obvias, pero es difícil tener una estrategia consistente para usar, ya que hay tantas combinaciones potenciales de piezas.
Esto me parece más una pregunta de programación que una de ajedrez, ¡pero no obstante es interesante! Después de pensar un poco, haría una idea de que la mejor manera de abordar este problema sería utilizar a los caballeros como punto de partida. Es bien sabido que el número máximo de caballeros que uno puede caber en un tablero es 32 (simplemente colocándolos en todos los cuadrados del mismo color), por lo tanto, tener esto como su posición inicial es lógico ya que esta es la ocupación máxima que puede tener con un pieza individual Esta estrategia se extiende a una placa N x N.
Después, usaría peones ya que su destreza de ataque se limita a diagonales delanteras de un cuadrado de alcance. Pueden ocupar cualquier otra columna (no filas, ya que esto se limitaría a 2, 4 y 6 si se siguen las reglas convencionales), y esto agregará N / 4 cuadrados más ocupados para un tablero NxN. Esto se generaliza a un número total de cuadrados ocupados a N / 2 + N / 4, o simplemente 3N / 4 cuadrados ocupados totales.
Este es el resultado de aproximadamente 5 minutos de consideración, por lo que mi algoritmo puede ser defectuoso. ¡Espero que esto ayude a responder tu pregunta!
Pensaría que con una selección aleatoria de piezas, la estrategia básica sería colocarlas en el tablero para que atacaran la menor cantidad de cuadrados posible y no obstruyeran ningún rango o archivo que no estuviera obstruido siempre que fuera posible. es decir, caballeros en las esquinas, piezas móviles de corta distancia como el rey y el caballero en el mismo rango o archivo, y obispos en el mismo rango o archivo que otras piezas. En general, al elegir un cuadrado para la nueva pieza, sería similar a una caza del rey. Al tratar de precisar al rey, desea reducir la cantidad de casillas que puede ocupar de manera segura tanto como sea posible (sin reducirlo uno). Aquí desea que cada pieza se coloque para reducir el número de cuadrados que aún no ha sido atacado por ninguna pieza lo menos posible.
Dado que la definición del problema se actualizó recientemente, supongo que está comenzando con una placa NxN vacía, y se les da una pieza aleatoria y se les pide que la coloquen. Cuando termine, se le dará otra pieza aleatoria hasta que no se pueda colocar más.
Para una estrategia humana , supongo que una buena regla general sería elegir una posición (válida) que minimice el número de cuadrados aún abiertos negados por la nueva pieza. Hay dos componentes principales para esto, en un nivel alto:
Para una estrategia de programación , tenemos que mirar el problema nuevamente. La forma en que se indica anteriormente no es realmente un problema de programación, ya que nuestro éxito depende de encontrar la mejor estrategia posible (lo que claramente no hemos hecho). La programación tradicional realmente no ayudará en este sentido, porque las reglas del problema le niegan a la computadora un conocimiento perfecto de las piezas que están por venir. Esto hace que los enfoques tradicionales de fuerza bruta o retroceso (generalmente utilizados para resolver problemas 8 / N-Queens ) sean imposibles de emplear.
Sin embargo, se podrían emplear varias técnicas de IA en busca de una estrategia óptima. Esencialmente, esto se reduciría a encontrar una manera de representar una estrategia en algún tipo de estructura de datos. Esta es realmente la parte difícil, y podría ser extremadamente difícil. Probablemente tendría que crear algún tipo de lenguaje específico de dominio que permitiría reglas como "elegir la columna más a la derecha que aún no tiene un caballero", o lo que sea. Entonces, esencialmente elegiría algún tipo de algoritmo de optimización (búsqueda aleatoria, algoritmos genéticos, enjambres de partículas, etc.) para encontrar un conjunto particularmente bueno de reglas, que parece superar el resto que ha encontrado hasta ahora. Hay una buena posibilidad de que sea tan enrevesadamente horrible que nunca podamos entender cómo y por qué funciona tan bien, pero bien podría vencer a los que '
Los dos puntos principales son:
Como ejemplo, publicaré un estudio rápido que hice sobre caballeros, es un poco tonto ya que ya sabemos que podemos colocar 32 caballeros en un tablero de 8x8 simplemente poniéndolos a todos en el mismo color, pero aún así lo hice para vea que pocos caballeros deben ser arreglados:
(observe cómo el punto 2 determina qué disposición es mejor cuando tenemos un empate)
Además, dos enlaces útiles que encontré son:
Mantenga las piezas fuera del centro, a los lados.