/// <summary>
 /// Constructs Associative memory
 /// </summary>
 /// <param name="input">Input values</param>
 /// <param name="nrows">Number of rows</param>
 /// <param name="ncolumns">Number of columns</param>
 /// <param name="iterations">Maximum number of iterations</param>
 public AssociativeMemory(List <List <int> > input, int nrows, int ncolumns, int iterations = 100)
 {
     _input     = new Matrix(input, nrows, ncolumns);
     Iterations = iterations;
     T          = new HopfieldMatrix(_input);
 }
 /// <summary>
 /// Constructs Associative memory
 /// </summary>
 /// <param name="input">Input values</param>
 /// <param name="iterations">Maximum number of iterations</param>
 public AssociativeMemory(int[,] input, int iterations = 100)
 {
     _input     = new Matrix(input);
     Iterations = iterations;
     T          = new HopfieldMatrix(_input);
 }