/// <summary> /// Реализовать алгоритм Беллмана – Форда нахождения кратчайшего пути. Описать возможности его применения. /// </summary> /// <param name="matrixGraph"></param> /// <param name="outTask"></param> public void FifthTask(RichTextBox matrixGraph, TextBox inTask, RichTextBox outTask) { outTask.Clear(); ClassOperationsOnGraph operation = new ClassOperationsOnGraph(matrixGraph); OutputBellmanFord(operation.BellmanFord(GetStartVertex(inTask)), GetStartVertex(inTask), outTask); }
/// <summary> /// Дан неориентированный граф. Построить произвольное максимальное независимое множество вершин графа. /// </summary> /// <param name="matrixGraph"></param> /// <param name="outTask"></param> public void SecondTask(RichTextBox matrixGraph, TextBox outTask) { ClassOperationsOnGraph operation = new ClassOperationsOnGraph(matrixGraph); List <int> Answer = operation.FindMaxIndependent(); OutputFromListAnswerTextBox(Answer, outTask); }
/// <summary> /// Дан смешанный граф. Дано натуральное число n. Найти количество путей длины n. /// </summary> /// <param name="matrixGraph"></param> /// <param name="neededLength"></param> /// <param name="outTask"></param> public void FirstTask(RichTextBox matrixGraph, TextBox neededLength, TextBox outTask) { ClassOperationsOnGraph operation = new ClassOperationsOnGraph(matrixGraph); int n = GetNeededLength(neededLength); int countWay = operation.GetCountWay(n); outTask.Clear(); outTask.AppendText(countWay.ToString()); }
/// <summary> /// Дан произвольный неориентированный граф, проверить, будет ли он деревом. /// </summary> /// <param name="matrixGraph"></param> /// <param name="outTask"></param> public void FourthTask(RichTextBox matrixGraph, TextBox outTask) { outTask.Clear(); ClassOperationsOnGraph operation = new ClassOperationsOnGraph(matrixGraph); if (operation.CheckTree()) { outTask.AppendText("Граф является деревом"); } else { outTask.AppendText("Граф не является деревом"); } }
/// <summary> /// Дан ориентированный слабосвязный граф. Построить топологическую сортировку вершин этого графа. /// </summary> /// <param name="matrixGraph"></param> /// <param name="outTask"></param> /// <param name="newMatrixGraph"></param> public void ThirdTask(RichTextBox matrixGraph, TextBox outTask, RichTextBox newMatrixGraph) { ClassOperationsOnGraph operation = new ClassOperationsOnGraph(matrixGraph); (int[][], Stack <int>)tupleTask = (operation.TopologicalSortGraphAndStack()); newMatrixGraph.Clear(); outTask.Clear(); if (tupleTask.Item1 == null) { newMatrixGraph.AppendText("Граф не ацикличен\nСортировка невозможна"); } else { OutputMatrixRichTextBox(tupleTask.Item1, newMatrixGraph); OutputStack(tupleTask.Item2, outTask); } }