Full tabu memory that stores deeps copies of recently visited solutions and declares a move tabu if
applying it to the current solution yields a neighbouring solution which is currently contained in
the memory. A full tabu memory has a single parameter controlling the size of the memory, i.e. the
number of recently visited solutions which are simultaneously stored. If the size is exceeded, the
least recently visited solution is discarded from the memory (FIFO).
Verifies whether the given move is tabu by applying it to the current solution and checking if the obtained
neighbour is currently contained in the tabu memory. If not, the move is allowed. Before returning, the move
is undone to restore the original state of the current solution.