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); }
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); }
private void OnAlgorithmPerformed(GraphAlgorithmResult result) { }