maxozolin / ConnectX

0 stars 0 forks source link

Refactoring dell'albero #6

Open maxozolin opened 1 year ago

maxozolin commented 1 year ago

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.

Inoltre possiamo pensare a ridurre il numero di foglie aggiunte alle 2 migliori e poi andare a fare un'algoritmino carino sull'albero cosi' il professore e' contento