public bool Check(AdjacencyMatrix matrix) { var array = Enumerable.Range(0, matrix.Vertices).ToArray(); var perms = Permutations.Find(array); foreach (int[] alpha in perms) { bool result = true; for (int i = 0; i < matrix.Vertices; i++) { for (int j = 0; j < matrix.Vertices; j++) { int u = alpha[i]; int v = alpha[j]; if (mainMatrix[i, j] != matrix[u, v]) { result = false; goto outerLoop; } } } outerLoop: if (result) { return(true); } } return(false); }