jantizio / Heisemberg-MNKGame

Implementazione del progetto di Algoritmi e Strutture dati 2021/2022
2 stars 0 forks source link

Problema con la nuova eval #2

Closed jantizio closed 1 year ago

jantizio commented 1 year ago

La nuova funzione di valutazione ha un problema a cui non avevo pensato, ovvero a un certo step trova una sequenza che però scompare allo step successivo, perché ad esempio viene bloccata. La valutazione non tiene conto di questo e non riduce la valutazione della board.

Esempio pratico:

█ █ █
X X █
█ O █ 

qui assegna un punteggio di 100 perché ha trovato una threat sequence, ovvero le due X che minacciano la vittoria. Al turno successivo il cerchio blocca

█ █ █
X X O
█ O █

qui assegna comunque un punteggio di 100 perché la nuova mossa cerchio in [1,2] non fa parte di nessuna sequenza e quindi il punteggio è solo quello precedente ovvero sempre 100. La cosa è sbagliata perchè quella sequenza è sparita.

Secondo me questo problema non rende l'algoritmo da buttare, però possiamo fare una considerazione: vale la pena sistemarlo, magari per un costo computazione più alto, se tanto il miglioramento che si percepisce è abbastanza basso?

Se secondo voi ha senso sistemarlo, come si potrebbe fare?

AlleNeri commented 1 year ago

Siccome l'idea principale è controllare le nuove sequenze a partire dal nuovo simbolo, l'idea è fare lo stesso, ma a partire dalle sequenze vecchie che "spariscono". Nella pratica basta controllare le sequenze di simboli diversi da quello appena inserito e adiacenti ad esso(le sequenze dell'avversario).

jantizio commented 1 year ago

la threat sequence per la X è FREE X X e quindi devo sostituire FREE con O e così devo controllare O X X

SaadMedhat commented 1 year ago

Secondo me questo problema non rende l'algoritmo da buttare, però possiamo fare una considerazione: vale la pena sistemarlo, magari per un costo computazione più alto, se tanto il miglioramento che si percepisce è abbastanza basso?

Se secondo voi ha senso sistemarlo, come si potrebbe fare?

Secondo me se risolverlo non apporta un miglioramento particolarmente sostanziale, si può evitare di risolvere oppure ci pensiamo piu' avanti.

jantizio commented 1 year ago

da cosa deduci che non apporta un miglioramento sostanziale? il fatto è che lui vede delle board con sequenze bloccate alla pari con board che hanno sequenze ancora aperte

inoltre il fatto che il valore della board può solo aumentare più vengono fatte è un errore logico

SaadMedhat commented 1 year ago

da cosa deduci che non apporta un miglioramento sostanziale?

Lo avevo dedotto da quello che hai scritto, pensando che avessi già tratto tu questa conclusione con dei test, infatti avevo scritto "SE risolverlo", piccolo misunderstanding.

█ █ █ X X O █ O █ qui assegna comunque un punteggio di 100 perché la nuova mossa cerchio in [1,2] non fa parte di nessuna sequenza e quindi il punteggio è solo quello precedente ovvero sempre 100. La cosa è sbagliata perchè quella sequenza è sparita.

Prima dell'assegnamento del punteggio precedente 100 per la nuova mossa cerchio in [1,2], si potrebbe fare il controllo che ha proposto @AlleNeri e in base a quello ricalcolare il punteggio della nuova board?

jantizio commented 1 year ago

questa issue è stata risolta