maxozolin / ConnectX

0 stars 0 forks source link

Albero di decisione base #1

Closed maxozolin closed 1 year ago

maxozolin commented 1 year ago

Come implementazione c'e, quindi chiudo questa e apro una seconda issue a tema. Ma penso che e' da riconsiderare l'implementazione: Al momento viene copiata la scacchiera che e' pessimo a livello di memoria. Possiamo andare a copiarla solo una volta ed utilizzare le funzioni markColumn() e unmarkColumn() della board. Questo avrebbe complessita' computazionale di: O(k log n) in caso di markColumn dove k e' il numero di pezzi da connettere ed n e' il numero di mosse considerate O(log n) in caso di unmarkColumn().

Forse si puo' trasformare markColumn() in O(log n) sacrificando l'accuratezza del gameState, ma non conviene perche':

  1. Introduce bug
  2. L' algoritmo finale avra'complessita' legata a k comunque. L'importante e' provare a tenerlo lineare o al massimo k log k.