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':
Introduce bug
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
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':
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