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.