/// <summary> /// Группирует изоморфные подграфы в новые паттерны. /// </summary> /// <param name="isomorphismGroups">Группы изоморфизма</param> /// <param name="potentialPatterns">Сгруппированные по инвариантам подграфы</param> /// <param name="matrices">Матрицы смежности подграфов</param> private List <Pattern> CreateNewPatterns(int[] isomorphismGroups, InvariantInstance[] potentialPatterns, AdjacencyMatrix[] matrices) { var newPatterns = new List <Pattern>(); for (int i = 0; i < potentialPatterns.Length; i++) { if (isomorphismGroups[i] != i) { continue; } var pattern = new Pattern(potentialPatterns[i].Key, matrices[i]); pattern.AddInstance(potentialPatterns[i].Vertices); for (int j = i + 1; j < potentialPatterns.Length; j++) { if (isomorphismGroups[j] != i) { continue; } pattern.AddInstance(potentialPatterns[j].Vertices); } newPatterns.Add(pattern); } return(newPatterns); }