Quali sono le tecniche che si possono usare per la scacchiera?


8

Quali sono le tecniche che si possono usare per tenere tutti i pezzi su una tavola? È come un problema di n-regina

È una combinazione di n-regina


2
Suggerirei sicuramente di porre questa domanda in matematica o nel forum di programmazione, poiché probabilmente otterresti le risposte più precise da loro.
chubbycantorset,

-1 Dopo la modifica del 25 agosto questa domanda non è affatto comprensibile. "Quali sono le tecniche che si possono usare per la scacchiera?" Cosa diavolo significa?
Halvard,

Risposte:


5

Per indirizzare la modifica alla domanda Se stai ricevendo i pezzi in un ordine casuale e non hai informazioni sui pezzi futuri, il modo di organizzare i pezzi sarebbe quello di dare ai pezzi il minor spazio possibile. Ad esempio, se dovessi ricevere una regina al primo turno, la posizionerei in uno dei quattro angoli. Qualche altra regola sarebbe quella di tenere i cavalieri vicini l'uno all'altro e le pedine accatastate l'una sull'altra. Tutte queste strategie sono un po 'ovvie, ma è difficile avere una strategia coerente da usare in quanto ci sono così tante potenziali combinazioni di pezzi.


Mi sembra più una questione di programmazione che una di scacchi, ma è comunque interessante! Dopo aver pensato per un po ', ipotizzerei che il modo migliore per affrontare questo problema sarebbe usare i cavalieri come base. È noto che il numero massimo di cavalieri che si possono inserire su una tavola è 32 (semplicemente posizionandoli su tutti i quadrati dello stesso colore), quindi avere questo come posizione di partenza è logico in quanto questa è la massima occupazione che puoi avere con un pezzo singolo. Questa strategia si estende a una scheda N x N.

Successivamente, userei i pedoni poiché la loro abilità in attacco è limitata alle diagonali in avanti di un quadrato di portata. Possono occupare ogni altra colonna (non righe poiché ciò sarebbe limitato a 2, 4 e 6 se si seguono le regole convenzionali), e questo aggiungerà N / 4 più quadrati occupati per una scheda NxN. Questo si generalizza a un numero totale di quadrati occupati a N / 2 + N / 4, o semplicemente a 3 N / 4 quadrati occupati totali.

Questo è il risultato di circa 5 minuti di considerazione, quindi il mio algoritmo potrebbe essere difettoso. Spero che questo aiuti a rispondere alla tua domanda!


4

Penserei che con una selezione casuale di pezzi la strategia di base sarebbe quella di posizionarli sul tabellone in modo che attaccassero il minor numero possibile di quadrati e non ostruissero alcun grado o file che non fosse già stato ostruito ogni volta che fosse possibile. cioè cavalieri negli angoli, pezzi mobili a breve distanza come il re e il cavaliere sullo stesso rango o file e vescovi sullo stesso rango o file degli altri pezzi. In generale, quando si sceglie un quadrato per il nuovo pezzo, sarebbe simile a una caccia al re. Quando cerchi di fissare il re, vuoi ridurre il numero di quadrati che può occupare in sicurezza il più possibile (senza ridurlo di uno). Qui si desidera posizionare ogni pezzo per ridurre il numero di quadrati non ancora attaccati da nessun pezzo il meno possibile.


2

Poiché la definizione del problema è stata aggiornata di recente, presumo che tu stia iniziando con una scheda NxN vuota, e ti venga dato un pezzo casuale e ti viene chiesto di posizionarlo. Al termine, ti viene dato un altro pezzo a caso fino a quando non puoi più posizionarlo.

Per una strategia umana , immagino che una buona regola empirica sarebbe quella di scegliere una posizione (valida) che minimizzi il numero di quadrati ancora aperti negati dal nuovo pezzo. Esistono due componenti principali a questo livello, ad alto livello:

  • Posizionare alcuni tipi di pezzi vicino al bordo della tavola può essere utile (dico alcuni , perché quando si posiziona una torre, si negheranno i quadrati 2N-1 indipendentemente da dove lo si posiziona, ma la logica vale bene per i cavalieri).
  • Ogni quadrato essendo doppio (o triplo, ecc.) Attaccato rappresenta un potenziale quadrato libero da qualche altra parte sul tabellone. Tienilo a mente per massimizzare i quadrati veramente aperti.

Per una strategia di programmazione , dobbiamo esaminare nuovamente il problema. Il modo in cui è affermato sopra non è in realtà un problema di programmazione, poiché il nostro successo dipende dalla ricerca della migliore strategia possibile (cosa che chiaramente non abbiamo fatto). La programmazione tradizionale non aiuterà in questo senso, perché le regole del problema negano al computer la perfetta conoscenza di quali pezzi stanno arrivando. Ciò rende impossibile applicare gli approcci tradizionali di brute-force o backtracking (tipicamente utilizzati per risolvere i problemi di 8 / N-Queens ).

Si potrebbero, tuttavia, impiegare varie tecniche di intelligenza artificiale alla ricerca di una strategia ottimale. In sostanza, ciò si riduce a trovare un modo per rappresentare una strategia in una sorta di struttura di dati. Questa è in realtà la parte difficile e potrebbe diventare estremamente complicata. Probabilmente dovresti creare un tipo di linguaggio specifico per il dominio che consenta regole come "scegli la colonna più a destra che non ha ancora un cavaliere", o altro. Quindi sceglieresti una specie di algoritmo di ottimizzazione (ricerca casuale, algoritmi genetici, sciami di particelle, ecc.) Per trovare un insieme di regole particolarmente buone, che sembra battere tutto il resto che hai trovato finora. C'è una buona probabilità che sia così orribilmente contorto che non potremmo mai capire come e perché funziona così bene, ma potrebbe anche battere quelli che


1

I due punti principali sono:

  1. Avere il minor numero di quadrati attaccati in ogni momento , che può essere riformulato per " provare sempre ad attaccare gli stessi quadrati più volte ", la logica alla base è che, se riesci a impilare gli attacchi, inevitabilmente ridurrà il numero totale di quadrati attaccati (che è quello che vogliamo), facendo più spazio per il posizionamento di altri pezzi.
  2. Sposta gruppi di pezzi vicino agli angoli e ai bordi del tabellone , questo ridurrà di nuovo il numero di quadrati attaccati. A volte avremo bisogno di capovolgere e rispecchiare determinati gruppi di pezzi per sapere quale angolo ci salverà la quantità massima di quadrati (esempio di immagine sotto).

Ad esempio, posterò un rapido studio che ho fatto sui cavalieri, è un po 'sciocco poiché sappiamo già che possiamo posizionare 32 cavalieri in una tavola 8x8 semplicemente mettendoli tutti sullo stesso colore, ma l'ho ancora fatto per guarda quanti cavalieri dovrebbero essere organizzati:

(nota come il punto 2 determina quale accordo è meglio quando abbiamo un pareggio)

inserisci qui la descrizione dell'immagine

Inoltre, due link utili che ho trovato sono:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.