Nelle due cartelle MapColoring e nQueens troviamo i codici sorgente
e dei file .csv in cui sono riportati i dati ricavati dai test svolti
sull'algoritmo. 

Se si vuole testare nuovamente l'algoritmo generando nuovi dati deve
essere eseguito il codice sorgente del problema scelto. In autonomia
il programma creerà nuovi file .csv o caricherà quelli già esistenti
su cui scriverà i risultati.

Per eseguire i codici sorgente in un sistema operativo Ubuntu è
necessario scrivere nella linea di comando:

python3 nomeFile.py


Per l'implementazione dell'algoritmo Min Conflicts ho seguito lo 
pseudocodice prpresentato nel libro Artificial Intelligence a 
Modern Approach al capitolo 6.4; per la creazione delle mappe 
ho seguito la strategia proposta nell’esercizio 6.10 del libro 
Artificial Intelligence a Modern Approach; per la verifica della
intersezione fra archi ho utilizzato l’algoritmo presentato al 
capitolo 33.1 nel libro Introduction to Algorithms. Ulteriori
dettagli sono forniti nel file "Relazione Macchiarini 6129400.pdf".

Per fornire la possibilità di svolgere tutti i test che ho svolto 
ho inserito nel codice variabili non previste dallo pseudocodice.
La base del codice è generale ed è quella sotto riportata.

    def minConflict(self, maxSteps):
        self.initSolution()
        for i in range(maxSteps):
            if (self.checkSolution()):
                return self.variables
            variable = self.inConflict[random.randint(0, len(self.inConflict) - 1)]
            value = self.getMinConflicting(variable) 
            if (self.restartCondition()):
                self.randomRestart()
            self.updateValue(variable, value)
        return None