Esempio n. 1
0
        protected override GraphAlgorithmResult PerformAlgorithm(GraphAlgorithmParameters parameters)
        {
            var graph = parameters.Graph;

            var eulerianPath = GraphAlgorithms.EulerianPath(graph);

            var stringResult = eulerianPath == null
                ? "Граф не содержит эйлеров путь"
                : $"Эйлеров путь:\n{string.Join("\n", eulerianPath)}";

            var result = new GraphAlgorithmResult(edges: eulerianPath?.ToArray(), stringResult: stringResult, isSequential: true);

            return(result);
        }
        protected override GraphAlgorithmResult PerformAlgorithm(GraphAlgorithmParameters parameters)
        {
            // Извлекаем из параметров нужные штуки
            var graph = parameters.Graph;

            // Вызываем написанный extension метод
            var connectedComponentsCount = GraphAlgorithms.ConnectedComponentsCount(graph);

            // Оборачиваем результат выполнения
            var result = new GraphAlgorithmResult(
                number: connectedComponentsCount,
                stringResult: $"Количество компонент связности: {connectedComponentsCount}");

            // Возвращаем
            return(result);
        }
        protected override GraphAlgorithmResult PerformAlgorithm(GraphAlgorithmParameters parameters)
        {
            // Извлекаем из параметров нужные штуки
            var graph = parameters.Graph;

            // Вызываем написанный extension метод
            var minimumSpanningTree = graph.MST()?.ToArray();

            var stringResult =
                minimumSpanningTree != null
                ? $"Минимальное остновное дерево:\n{string.Join<Edge>(Environment.NewLine, minimumSpanningTree.ToArray())}"
                : "Для данного графа невозможно построить минимальное остовное дерево";

            // Оборачиваем результат выполнения
            var result = new GraphAlgorithmResult(edges: minimumSpanningTree, stringResult: stringResult);

            // Возвращаем
            return(result);
        }
Esempio n. 4
0
        protected override GraphAlgorithmResult PerformAlgorithm(GraphAlgorithmParameters parameters)
        {
            // Извлекаем из параметров нужные штуки
            var graph = parameters.Graph;
            var begin = parameters.Vertices[0];
            var end   = parameters.Vertices[1];

            // Вызываем написанный extension метод
            var edgePath = graph.ShortestPath(begin, end)?.ToArray();

            var stringResult =
                edgePath != null
                ? $"Кратчайший путь:\n{string.Join<Edge>(Environment.NewLine, edgePath)}"
                : "Нет пути";

            // Оборачиваем результат выполнения
            var result = new GraphAlgorithmResult(edges: edgePath, stringResult: stringResult, isSequential: true);

            // Возвращаем
            return(result);
        }
Esempio n. 5
0
 private void OnAlgorithmPerformed(GraphAlgorithmResult result)
 {
 }