Risolutore Monte Carlo del gioco Sudoku

Transcript

Risolutore Monte Carlo del gioco Sudoku
Corso di Metodi MonteCarlo 2007/08 - problema di esame
Risolutore Monte Carlo del gioco Sudoku
Si consideri il gioco del Sudoku, descritto in http://it.wikipedia.org/wiki/Sudoku, consistente nel completamento di una griglia di N × N blocchi ciascuno dei quali costituito da
N × N celle—per un totale di N 2 × N 2 celle—che è inizialmente riempita parzialmente. A
gioco completato ogni cella deve contenere un numero intero tra 1 e N 2 , e inoltre ogni riga,
ogni colonna e ogni blocco deve contenere tutti i numeri tra 1 e N 2 una e una sola volta.
Il gioco classico ha N = 3, ma qui si considererà il caso generale.
Si implementi un risolutore di Sudoku basato su Markov Chain Monte Carlo e simulated
annealing. Si definisca a tal scopo una funzione “energia” che ha un minimo in corrispondenza di una soluzione (a fini pratici è comodo fare in modo che tale minimo sia 0) attraverso
meccanismi di conteggio dei difetti. Ciò può essere ottenuto in vari modi; mettere tra loro
a confronto eventuali funzioni energia diverse. Si definisca una procedura di inizializzazione
della griglia e le mosse Monte Carlo ammesse.
Si applichi quindi il risolutore al problema con N = 6 descritto da un file allegato1 . Si
sperimentino strategie di annealing diverse per ottimizzare l’efficienza del risolutore.
Presentare i risultati ottenuti e le difficoltà incontrate.
1
http://www.fisica.uniud.it/~ercolessi/MC/esami/data/sudoku.txt. Ogni riga del file contiene
i dati di una riga di celle. Gli zeri indicano le celle vuote da riempire.