Je suggérerais certainement que vous posiez cette question dans le forum de mathématiques ou de programmation, car vous obtiendriez probablement les réponses les plus précises d'eux.
chubbycantorset
-1 Après modification le 25 août, cette question n'est pas compréhensible du tout. "Quelles sont les techniques que l'on peut utiliser pour l'échiquier?" Qu'est-ce que ça veut dire?
Halvard
Réponses:
5
Pour répondre à la modification de la question
Si vous recevez les pièces dans un ordre aléatoire et que vous ne disposez d'aucune information sur les futures pièces, la façon d'organiser les pièces serait de leur donner le moins de portée possible. Par exemple, si je recevais une reine au premier tour, je la placerais dans l'un des quatre coins. D'autres règles seraient de garder les chevaliers proches les uns des autres et les pions empilés les uns sur les autres. Toutes ces stratégies sont un peu évidentes, mais il est difficile d'avoir une stratégie cohérente à utiliser car il y a tellement de combinaisons potentielles de pièces.
Cela me semble plus une question de programmation qu'une question d'échecs, mais c'est intéressant tout de même! Après avoir réfléchi un peu, je pense que la meilleure façon d'aborder ce problème serait d'utiliser les chevaliers comme référence. Il est bien connu que le nombre maximum de chevaliers que l'on peut monter sur une planche est de 32 (en les plaçant simplement sur tous les carrés de la même couleur), il est donc logique d'avoir cette position de départ car il s'agit de l'occupation maximale que vous pouvez avoir avec un pièce individuelle. Cette stratégie s'étend à une carte N x N.
Ensuite, j'utiliserais des pions car leur prouesse d'attaque est limitée aux diagonales avant d'une portée. Ils peuvent occuper toutes les autres colonnes (pas les lignes car cela serait limité à 2, 4 et 6 si vous suivez les règles conventionnelles), et cela ajoutera N / 4 carrés occupés supplémentaires pour un plateau NxN. Cela se généralise à un nombre total de carrés occupés à N / 2 + N / 4, ou simplement 3N / 4 au total de carrés occupés.
Ceci est le résultat d'environ 5 minutes de réflexion, donc mon algorithme peut être défectueux. J'espère que cela aide à répondre à votre question!
Je penserais qu'avec une sélection aléatoire de pièces, la stratégie de base serait de les placer sur le plateau pour qu'elles attaquent le moins de cases possible et n'obstruent aucun rang ou fichier qui n'était pas déjà obstrué autant que possible. c'est-à-dire des chevaliers dans les coins, des pièces mobiles à courte distance comme le roi et le chevalier de même rang ou file, et des évêques de même rang ou file que les autres pièces. En général, lors du choix d'un carré pour la nouvelle pièce, cela ressemblerait à une chasse au roi. Lorsque vous essayez d'épingler le roi, vous voulez réduire autant que possible le nombre de cases qu'il peut occuper en toute sécurité (sans le réduire). Ici, vous voulez que chaque pièce soit placée pour réduire le moins possible le nombre de cases qui ne sont toujours pas attaquées par aucune pièce.
Étant donné que la définition du problème a été mise à jour récemment, je suppose que vous commencez avec une carte NxN vide et que vous recevez un morceau aléatoire et que vous lui demandez de le placer. Une fois terminé, on vous donne une autre pièce aléatoire jusqu'à ce que plus ne puisse être placé.
Pour une stratégie humaine , je suppose qu'une bonne règle de base serait de choisir une position (valide) qui minimise le nombre de carrés encore ouverts refusés par la nouvelle pièce. Il y a deux éléments principaux à cela, à un niveau élevé:
Placer certains types de pièces près du bord de la planche peut être bénéfique (j'en dis certains , car lorsque vous placez une tour, vous refuserez les carrés 2N-1 quel que soit l'endroit où vous la placez, mais la logique tient bien pour les chevaliers).
Chaque carré étant double (ou triple, etc.) attaqué représente un carré libre potentiel ailleurs sur le plateau. Gardez cela à l'esprit pour maximiser les carrés vraiment ouverts.
Pour une stratégie de programmation , nous devons réexaminer le problème. La façon dont il est indiqué ci-dessus n'est pas vraiment un problème de programmation, car notre succès dépend de la recherche de la meilleure stratégie possible (ce que nous n'avons clairement pas fait). La programmation traditionnelle n'aidera pas vraiment dans ce sens, car les règles du problème nient à l'ordinateur une parfaite connaissance des éléments à venir. Cela rend les approches traditionnelles de forçage brutal ou de retour en arrière (généralement utilisées pour résoudre les problèmes 8 / N-Queens ) impossibles à utiliser.
On pourrait cependant utiliser diverses techniques d'IA à la recherche d'une stratégie optimale. Essentiellement, cela reviendrait à trouver un moyen de représenter une stratégie dans une sorte de structure de données. C'est en fait la partie difficile et pourrait devenir extrêmement délicate. Vous devrez probablement créer une sorte de langage spécifique au domaine qui autoriserait des règles comme "choisir la colonne la plus à droite qui n'a pas encore de chevalier", ou autre chose. Ensuite, vous choisiriez essentiellement une sorte d'algorithme d'optimisation (recherche aléatoire, algorithmes génétiques, essaims de particules, etc.) pour trouver un ensemble de règles particulièrement bon, qui semble l'emporter sur tout le reste que vous avez trouvé jusqu'à présent. Il y a de fortes chances qu'il soit si horriblement alambiqué que nous ne pourrions jamais comprendre comment et pourquoi cela fonctionne si bien, mais il pourrait bien battre ceux que nous '
Avoir le moins de carrés attaqués à tout moment , ce qui peut être reformulé pour " toujours essayer d'attaquer les mêmes carrés plusieurs fois ", la logique derrière est que, si vous parvenez à empiler les attaques, cela réduira inévitablement le nombre total de carrés attaqués (c'est ce que nous voulons), ce qui laisse plus de place pour d'autres pièces à placer.
Déplacez des groupes de pièces près des coins et des bords du plateau , cela réduira encore le nombre de cases attaquées. Nous devrons parfois retourner et refléter certains groupes de pièces pour savoir quel coin nous permettra d'économiser le maximum de carrés (exemple d'image ci-dessous).
Comme par exemple, je posterai une étude rapide que j'ai faite sur les chevaliers, c'est un peu idiot puisque nous savons déjà que nous pouvons placer 32 chevaliers dans une planche 8x8 juste en les mettant tous de la même couleur, mais je l'ai quand même fait pour voyez comment peu de chevaliers devraient être disposés:
(remarquez comment le point # 2 détermine quel arrangement est meilleur quand nous avons une égalité)
Réponses:
Pour répondre à la modification de la question Si vous recevez les pièces dans un ordre aléatoire et que vous ne disposez d'aucune information sur les futures pièces, la façon d'organiser les pièces serait de leur donner le moins de portée possible. Par exemple, si je recevais une reine au premier tour, je la placerais dans l'un des quatre coins. D'autres règles seraient de garder les chevaliers proches les uns des autres et les pions empilés les uns sur les autres. Toutes ces stratégies sont un peu évidentes, mais il est difficile d'avoir une stratégie cohérente à utiliser car il y a tellement de combinaisons potentielles de pièces.
Cela me semble plus une question de programmation qu'une question d'échecs, mais c'est intéressant tout de même! Après avoir réfléchi un peu, je pense que la meilleure façon d'aborder ce problème serait d'utiliser les chevaliers comme référence. Il est bien connu que le nombre maximum de chevaliers que l'on peut monter sur une planche est de 32 (en les plaçant simplement sur tous les carrés de la même couleur), il est donc logique d'avoir cette position de départ car il s'agit de l'occupation maximale que vous pouvez avoir avec un pièce individuelle. Cette stratégie s'étend à une carte N x N.
Ensuite, j'utiliserais des pions car leur prouesse d'attaque est limitée aux diagonales avant d'une portée. Ils peuvent occuper toutes les autres colonnes (pas les lignes car cela serait limité à 2, 4 et 6 si vous suivez les règles conventionnelles), et cela ajoutera N / 4 carrés occupés supplémentaires pour un plateau NxN. Cela se généralise à un nombre total de carrés occupés à N / 2 + N / 4, ou simplement 3N / 4 au total de carrés occupés.
Ceci est le résultat d'environ 5 minutes de réflexion, donc mon algorithme peut être défectueux. J'espère que cela aide à répondre à votre question!
la source
Je penserais qu'avec une sélection aléatoire de pièces, la stratégie de base serait de les placer sur le plateau pour qu'elles attaquent le moins de cases possible et n'obstruent aucun rang ou fichier qui n'était pas déjà obstrué autant que possible. c'est-à-dire des chevaliers dans les coins, des pièces mobiles à courte distance comme le roi et le chevalier de même rang ou file, et des évêques de même rang ou file que les autres pièces. En général, lors du choix d'un carré pour la nouvelle pièce, cela ressemblerait à une chasse au roi. Lorsque vous essayez d'épingler le roi, vous voulez réduire autant que possible le nombre de cases qu'il peut occuper en toute sécurité (sans le réduire). Ici, vous voulez que chaque pièce soit placée pour réduire le moins possible le nombre de cases qui ne sont toujours pas attaquées par aucune pièce.
la source
Étant donné que la définition du problème a été mise à jour récemment, je suppose que vous commencez avec une carte NxN vide et que vous recevez un morceau aléatoire et que vous lui demandez de le placer. Une fois terminé, on vous donne une autre pièce aléatoire jusqu'à ce que plus ne puisse être placé.
Pour une stratégie humaine , je suppose qu'une bonne règle de base serait de choisir une position (valide) qui minimise le nombre de carrés encore ouverts refusés par la nouvelle pièce. Il y a deux éléments principaux à cela, à un niveau élevé:
Pour une stratégie de programmation , nous devons réexaminer le problème. La façon dont il est indiqué ci-dessus n'est pas vraiment un problème de programmation, car notre succès dépend de la recherche de la meilleure stratégie possible (ce que nous n'avons clairement pas fait). La programmation traditionnelle n'aidera pas vraiment dans ce sens, car les règles du problème nient à l'ordinateur une parfaite connaissance des éléments à venir. Cela rend les approches traditionnelles de forçage brutal ou de retour en arrière (généralement utilisées pour résoudre les problèmes 8 / N-Queens ) impossibles à utiliser.
On pourrait cependant utiliser diverses techniques d'IA à la recherche d'une stratégie optimale. Essentiellement, cela reviendrait à trouver un moyen de représenter une stratégie dans une sorte de structure de données. C'est en fait la partie difficile et pourrait devenir extrêmement délicate. Vous devrez probablement créer une sorte de langage spécifique au domaine qui autoriserait des règles comme "choisir la colonne la plus à droite qui n'a pas encore de chevalier", ou autre chose. Ensuite, vous choisiriez essentiellement une sorte d'algorithme d'optimisation (recherche aléatoire, algorithmes génétiques, essaims de particules, etc.) pour trouver un ensemble de règles particulièrement bon, qui semble l'emporter sur tout le reste que vous avez trouvé jusqu'à présent. Il y a de fortes chances qu'il soit si horriblement alambiqué que nous ne pourrions jamais comprendre comment et pourquoi cela fonctionne si bien, mais il pourrait bien battre ceux que nous '
la source
Les deux points principaux sont:
Comme par exemple, je posterai une étude rapide que j'ai faite sur les chevaliers, c'est un peu idiot puisque nous savons déjà que nous pouvons placer 32 chevaliers dans une planche 8x8 juste en les mettant tous de la même couleur, mais je l'ai quand même fait pour voyez comment peu de chevaliers devraient être disposés:
(remarquez comment le point # 2 détermine quel arrangement est meilleur quand nous avons une égalité)
De plus, deux liens utiles que j'ai trouvés sont:
la source
Gardez les pièces hors du centre, sur les côtés.
la source