Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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());
        }
Beispiel #4
0
        /// <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("Граф не является деревом");
            }
        }
Beispiel #5
0
        /// <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);
            }
        }