Definitivamente sugeriría que haga esta pregunta en las matemáticas o en el foro de programación, ya que probablemente obtendrá las respuestas más precisas de ellos.
chubbycantorset
-1 Después de editar el 25 de agosto, esta pregunta no es entendible en absoluto. "¿Cuáles son las técnicas que uno puede usar para el tablero de ajedrez?" ¿Qué demonios significa eso?
Halvard el
Respuestas:
5
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:
Colocar algunos tipos de piezas cerca del borde del tablero puede ser beneficioso (digo algunas , porque al colocar una torre, negarás cuadrados de 2N-1 independientemente de dónde lo coloques, pero la lógica es muy buena para los caballeros).
Cada casilla que es doble (o triple, etc.) atacada representa una casilla libre potencial en algún otro lugar del tablero. Tenga esto en cuenta para maximizar los cuadrados verdaderamente abiertos.
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 '
Tenga la menor cantidad de casillas atacadas en todo momento , que se pueden volver a redactar para " tratar siempre de atacar las mismas casillas varias veces ", la lógica detrás es que, si logra apilar los ataques, inevitablemente reducirá el número total de cuadrados atacados (que es lo que queremos), dejando más espacio para colocar otras piezas.
Mueva grupos de piezas cerca de las esquinas y los bordes del tablero , esto nuevamente reducirá el número de cuadrados atacados. A veces tendremos que voltear y reflejar ciertos grupos de piezas para saber qué esquina nos ahorrará la cantidad máxima de cuadrados (ejemplo de imagen a continuación).
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)
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!
fuente
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.
fuente
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 '
fuente
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:
fuente
Mantenga las piezas fuera del centro, a los lados.
fuente