Solver e soluzioni

Risolutore di puzzle scorrevoli — confronto degli algoritmi

A* vs IDA*, Manhattan vs walking distance, vs database di pattern additivi. Sei algoritmi ben noti per risolvere i puzzle scorrevoli, a cosa è adatto ciascuno e dove ciascuno cede.

Aggiornato 2026-05-20 8 min di lettura

Risolutore del gioco del 15

Premi Mescola per una griglia casuale o Modifica per inserire la tua. Risolvi riproduce le mosse passo passo. Le soluzioni 3×3 sono ottimali.

Se stai implementando un risolutore di puzzle scorrevoli e non sei sicuro di quale algoritmo usare, questo articolo ne confronta sei ben noti su velocità, memoria, complessità del codice e la dimensione della griglia che gestiscono comodamente. Le risposte sono diverse per il 3×3, il 4×4 e il 5×5.

1. Ricerca in ampiezza (BFS)

L’algoritmo più stupido corretto. Esplora gli stati livello per livello fino a trovare l’obiettivo.

2. A* con distanza di Manhattan

Il primo vero algoritmo. Stessa struttura di BFS ma gli stati vengono estratti da una coda di priorità ordinata per f = g + h, dove h è l’euristica della distanza di Manhattan.

3. A* con Manhattan + conflitto lineare

Aggiungi 2 mosse all’euristica per ogni coppia di tessere nella stessa riga che sono entrambe nella loro riga obiettivo ma in ordine errato (analogamente per le colonne). Dovranno passarsi, cosa che la distanza di Manhattan non può vedere.

4. IDA* con Manhattan + conflitto lineare

A* a profondità iterativa. Fai DFS a profondità limitata usando il costo f come misura di profondità, alzando il limite a ogni iterazione. Scambia memoria con tempo riesplorando.

5. IDA* con walking distance

La walking distance è un’euristica più stretta. Precalcola, per ogni disposizione di tessere proiettata solo sulle righe, il numero minimo di operazioni di scambio di riga per portare ogni tessera nella sua riga corretta. Lo stesso per le colonne. Somma.

Cattura qualcosa che Manhattan perde: tessere nella stessa riga che si "contendono" lo stesso slot.

6. IDA* con database di pattern additivi e disgiunti

L’euristica più forte conosciuta per i puzzle scorrevoli. Partiziona le tessere in gruppi disgiunti (una partizione comune del 15-puzzle è 7+8, o 5+5+5). Precalcola, per ogni gruppo, il costo di permutare le tessere del gruppo nelle loro posizioni obiettivo su tutte le possibili disposizioni di quel gruppo. Al momento della ricerca, consulta il contributo di ogni gruppo e somma.

Raccomandazioni riassuntive

Se stai scrivendo un risolutore oggi:

E il machine learning?

Una domanda ragionevole nel 2026. Le euristiche con reti neurali sono state studiate almeno dal 2014 e possono produrre euristiche veloci per i puzzle scorrevoli. Il problema è che tipicamente non sono ammissibili — possono sovrastimare, il che significa che l’algoritmo risultante non è più garantito ottimale. Per gli sviluppatori di app che vogliono soluzioni garantite ottimali per la calibrazione della difficoltà, i classici database di pattern restano lo strumento giusto.

Per interesse di ricerca, database di pattern addestrati da una rete neurale producono leggeri speedup sulle istanze più difficili del 15-puzzle. Utili per articoli accademici, marginali per software in produzione.

Cosa va in un’app reale

Un’app mobile in produzione che ha bisogno di un risolutore per generare suggerimenti quasi sempre atterra su:

Quello è lo stack pragmatico giusto per un’app per telefono calmo. Il pulsante suggerimento di Slide Puzzle funziona esattamente così.