Matematica e teoria

Perché alcuni 15-puzzle non si possono risolvere — un controllo in linguaggio semplice

Puoi passare un’ora su un 15-puzzle che non ha soluzione. Ecco il controllo rapido in linguaggio semplice per sapere se la tua griglia può essere risolta — e cosa fare se la tua app continua a generarne di cattive.

Aggiornato 2026-05-20 5 min di lettura

Se hai mai passato trenta minuti su un 15-puzzle che semplicemente non finisce — ogni mossa che fai porta a due tessere scambiate alla fine — c’è una possibilità che il puzzle sia matematicamente irrisolvibile. Esattamente metà di tutte le disposizioni del 15-puzzle lo sono. Un’app scritta male può generarne una per errore.

Questo articolo è il controllo pratico. La giustificazione matematica completa vive in il teorema di parità; questo mantiene le cose semplici.

Il controllo in 30 secondi

Guarda le tessere in ordine di lettura — da sinistra a destra su ogni riga, dall’alto in basso — ignorando il vuoto.

Per ogni coppia di tessere, conta quante volte un numero più grande appare prima di uno più piccolo. Quel conteggio è il numero di inversioni.

Poi nota in quale riga si trova la casella vuota, contando dal basso (la riga in basso è 1, la riga sopra è 2, poi 3, poi 4 in alto).

Somma il numero di inversioni e la riga del vuoto dal basso. Se il risultato è dispari, il puzzle è risolvibile. Se pari, non lo è.

Ecco fatto. Quello è l’intero controllo.

Un esempio guidato

Supponi che la tua griglia abbia questo aspetto:

 1  2  3  4
 5  6  7  8
 9 10 11 12
13 15 14  _

Ordine di lettura: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14.

Conta le inversioni. Dobbiamo trovare ogni coppia in cui un numero più grande appare prima di uno più piccolo. Scorrendo: 15 appare prima di 14, e quella è l’unica inversione. Quindi conteggio inversioni = 1.

Il vuoto è nella riga in basso → riga 1 dal basso.

Somma: 1 + 1 = 2. Pari. Questa griglia è irrisolvibile.

Questo è, di fatto, il puzzle premio di Sam Loyd del 1880. L’uomo offrì 1000 dollari a chiunque potesse risolverlo. Il puzzle era irrisolvibile; tenne i suoi soldi.

Un altro esempio

Supponi che la tua griglia abbia questo aspetto:

 5  1  3  4
 2  6  7  8
 9 10 11 12
13 14 15  _

Ordine di lettura: 5, 1, 3, 4, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Conta le inversioni:

Totale inversioni: 6.

Il vuoto è nella riga in basso → riga 1.

Somma: 6 + 1 = 7. Dispari. Questa griglia è risolvibile.

Nota che 6 + 1 = 7 è dispari perché 6 è pari e aggiungiamo un numero dispari — no, aspetta. 6 + 1 = 7, che è dispari. Risolvibile.

Perché funziona (in breve)

Uno scorrimento legale o muove una tessera orizzontalmente (nessun cambiamento nelle inversioni, nessun cambiamento nella riga del vuoto) o verticalmente (cambia le inversioni di un numero dispari, cambia la riga del vuoto di 1).

In entrambi i casi, la somma di inversioni + riga del vuoto rimane pari-o-dispari nello stesso modo in cui è iniziata. Quindi questa somma è un invariante — una proprietà del puzzle che le mosse legali non possono cambiare.

Lo stato obiettivo (1‑2‑3‑...‑15 con il vuoto in basso a destra) ha 0 inversioni e il vuoto nella riga 1 dal basso. Somma: 1, dispari. Quindi qualsiasi puzzle risolvibile ha somma dispari. Qualsiasi puzzle con somma pari non può raggiungere l’obiettivo.

Per la dimostrazione completa con tutti i casi sviluppati, vedi la pagina sul teorema di parità.

E gli 8-puzzle (3×3)?

Il controllo è più semplice per il 3×3:

Non devi tracciare la riga del vuoto per il 3×3, perché la simmetria del puzzle rende ridondante la dipendenza dalla riga.

(Per 5×5 — stessa regola del 3×3. Per 6×6 — stessa regola del 4×4. La regola è "la riga del vuoto conta quando N è pari".)

Cosa fare se la tua app genera puzzle irrisolvibili

Questo non dovrebbe mai succedere. Un’app ben scritta usa uno di due metodi per evitarlo:

Generare camminando all’indietro dall’obiettivo. Parti dallo stato obiettivo, applica mosse valide casuali e usa lo stato risultante come posizione di partenza. Ogni posizione generata in questo modo è risolvibile per costruzione.

Generare casualmente, poi testare con la parità. Rimescola le tessere uniformemente a caso; calcola il controllo di parità; se pari, scambia due tessere qualsiasi per sistemarlo. La posizione risultante è garantita risolvibile.

Se incontri un puzzle irrisolvibile in un’app, quell’app è rotta. Segnala il bug, cambia app. Slide Puzzle usa il metodo del cammino all’indietro dall’obiettivo e non può produrre posizioni di partenza irrisolvibili.

Cosa fare se sospetti che il tuo puzzle fisico sia irrisolvibile

Due cose:

  1. Esegui il controllo. Inversioni più riga del vuoto. Se pari, i pezzi fisici sono stati assemblati in modo errato. Estrai una tessera, scambiala con una adiacente, e il puzzle è risolvibile.
  2. Se anche dopo uno scambio il puzzle ti resiste — la resistenza è la tua strategia, non il puzzle.

Il controllo di parità richiede circa trenta secondi. Farlo prima di affondare un’altra ora in una griglia bloccata è un uso ragionevole di quei secondi.