Rompicapo delle otto regine
# Rompicapo delle otto regine

| | a | b | c | d | e | f | g | h | |
| - | - | - | - | - | - | - | - | - | - |
| 8 | | | | | | | | | 8 |
| 7 | | | | | | | | | 7 |
| 6 | | | | | | | | | 6 |
| 5 | | | | | | | | | 5 |
| 4 | | | | | | | | | 4 |
| 3 | | | | | | | | | 3 |
| 2 | | | | | | | | | 2 |
| 1 | | | | | | | | | 1 |
| | a | b | c | d | e | f | g | h | |

Il rompicapo (o problema) delle otto regine è un problema che consiste nel trovare il modo di posizionare otto donne (pezzo degli scacchi) su una scacchiera 8×8 tali che nessuna di esse possa catturarne un'altra, usando i movimenti standard della regina. Perciò, una soluzione dovrà prevedere che nessuna regina abbia una colonna, traversa o diagonale in comune con un'altra regina. Il problema delle otto regine è un esempio del più generale problema delle n regine, che consiste nel piazzare, con le condizioni illustrate precedentemente, n regine su una scacchiera n × n; in questa forma, in particolare, esso viene spesso usato per illustrare tecniche di progettazione di algoritmi e di programmazione. È stato dimostrato matematicamente che il problema è risolvibile per n = 1 o n ≥ 4, mentre non lo è per n = 2 e n = 3.

## Storia

Il problema venne originariamente proposto nel 1848 dal giocatore di scacchi Max Bezzel, e negli anni molti matematici, incluso Gauss, che riuscì a trovare 72 delle 92 soluzioni, hanno lavorato al problema e alla sua forma generalizzata. La prima soluzione fu data da Franz Nauck nel 1850. Fu Nauck poi ad estendere il problema alla sua forma generalizzata. Nel 1874, S. Günther propose un metodo per trovare le soluzioni del problema utilizzando i determinanti, metodo che venne perfezionato poi da J.W.L. Glaisher.

Edsger Dijkstra, nel 1972, usò il problema delle n regine per illustrare il potere di ciò che egli chiamò programmazione strutturata. Pubblicò una descrizione assai dettagliata dello sviluppo di un algoritmo backtracking DFS.

## Tutte le soluzioni

Le 92 soluzioni si riducono essenzialmente a 12 non ottenibili l'una dall'altra tramite rotazioni e riflessioni:

| abcdefgh8877665544332211abcdefghSoluzione unica 1 | abcdefgh8877665544332211abcdefghSoluzione unica 2 | abcdefgh8877665544332211abcdefghSoluzione unica 3 | abcdefgh8877665544332211abcdefghSoluzione unica 4 |
| - | - | - | - |
| abcdefgh8877665544332211abcdefghSoluzione unica 5 | abcdefgh8877665544332211abcdefghSoluzione unica 6 | abcdefgh8877665544332211abcdefghSoluzione unica 7 | abcdefgh8877665544332211abcdefghSoluzione unica 8 |
| abcdefgh8877665544332211abcdefghSoluzione unica 9 | abcdefgh8877665544332211abcdefghSoluzione unica 10 | abcdefgh8877665544332211abcdefghSoluzione unica 11 | abcdefgh8877665544332211abcdefghSoluzione unica 12 |

## Numero delle soluzioni

La tabella seguente mostra il numero di soluzioni del problema delle n regine, sia uniche che distinte, per n = 1–14, 24–27.

| n: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | … | 24 | 25 | 26 | 27 |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Uniche: | 1 | 0 | 0 | 1 | 2 | 1 | 6 | 12 | 46 | 92 | 341 | 1 787 | 9 233 | 45 752 | … | 28 439 272 956 934 | 275 986 683 743 434 | 2 789 712 466 510 289 | 29 363 495 934 315 694 |
| Distinte: | 1 | 0 | 0 | 2 | 10 | 4 | 40 | 92 | 352 | 724 | 2 680 | 14 200 | 73 712 | 365 596 | … | 227 514 171 973 736 | 2 207 893 435 808 352 | 22 317 699 616 364 044 | 234 907 967 154 122 528 |

Notare che il problema delle sei regine ha meno soluzioni del problema delle cinque regine.

Non esiste ancora una formula per calcolare l'esatto numero di soluzioni.

## Versione animata della soluzione ricorsiva

Questa animazione usa il backtracking per risolvere il problema. Una regina è posizionata in una colonna che non genera conflitto. Se la colonna non viene trovata il programma ritorna all'ultimo stato positivo e viene provata una differente colonna.

