private void genEdges(List<string> first, List<string> last) { ///////Поставлю модулі на відповідні місця List<List<string>> firstOrder = new List<List<string>>(); firstOrder.Add(first); firstOrder.Add(last); foreach (List<string> list in calc.modulsAfterVerification) { if (list != first && list != last) firstOrder.Insert(1, list); } //Проставляю зв'язки createEdgesAndFindMinFeedBack(firstOrder); //Виводжу результати створення зв'язків і уточнені модулі з першою та останньою групою outVModulsFrom(firstOrder); textBox2.Text += "\r\nКількість зворотніх зв'язків: " + createEdgesAndFindMinFeedBack(firstOrder); _gArea.GenerateGraph(true, true);//Перемальовую граф }
//Сортую групи і множини елементів за кількістю елементів(разом щоб співпадали) private void sortV(List<HashSet<int>> groupsAfterV, List<HashSet<string>> setElAfterV) { List<HashSet<int>> temp = new List<HashSet<int>>(); List<HashSet<string>> temp2 = new List<HashSet<string>>(); for (int i = 0; i < groupsAfterV.Count; i++) { for (int j = 0; j < groupsAfterV.Count - 1; j++) { if (setElAfterV.ElementAt(j).Count < setElAfterV.ElementAt(j + 1).Count) { temp.Add(groupsAfterV.ElementAt(j)); groupsAfterV.Insert(j, groupsAfterV.ElementAt(j + 1)); groupsAfterV.RemoveAt(j + 1); groupsAfterV.Insert(j + 1, temp.ElementAt(0)); groupsAfterV.RemoveAt(j + 2); temp.Clear(); temp2.Add(setElAfterV.ElementAt(j)); setElAfterV.Insert(j, setElAfterV.ElementAt(j + 1)); setElAfterV.RemoveAt(j + 1); setElAfterV.Insert(j + 1, temp2.ElementAt(0)); setElAfterV.RemoveAt(j + 2); temp2.Clear(); } } } }