private void PerformTests() { var diikstraAvg = 0; var astarAvg = 0; int sumD = 0; int sumA = 0; for (int i = 0; i < TestsNum; i++) { var vertices = VertexFactory.GetVertices(TestVertexNum); var matrix = VertexFactory.GetRandomMatrix(TestVertexNum, 500, vertices); sumD += BypassService.DijkstraBypass(vertices, matrix, StartTestVertex); foreach (var node in vertices) { node.VStatus = VStatEnum.NoViewed; node.Distance = 10000; node.ParentId = -1; } sumA += BypassService.AStarBypass(vertices, matrix, StartTestVertex, FinishTestVertex); } diikstraAvg = sumD / TestsNum; astarAvg = sumA / TestsNum; RelaxationScore.Add(new RelaxationStats(TestVertexNum, diikstraAvg, astarAvg)); }
private void PerformBypass() { foreach (var node in VertexNodes) { node.VStatus = VStatEnum.NoViewed; node.Distance = 10000; node.ParentId = -1; } bool result = true; switch (SelectedBypass) { case 0: result = BypassService.DepthBypass(VertexNodes, MatrixAdjacency, BypassCollection); break; case 1: result = BypassService.WidthBypass(VertexNodes, MatrixAdjacency, BypassCollection); break; case 2: result = BypassService.DijkstraBypass(VertexNodes, MatrixAdjacency, BypassCollection, StartBVertex); break; case 3: result = BypassService.AStarBypass(VertexNodes, MatrixAdjacency, BypassCollection, StartBVertex, FinishBVertex); break; } if (!result) { new ModernDialog() { Title = "Обход графа", Content = "Не удалось дойти до целевой вершины графа (нельзя обойти все вершины)" }.ShowDialog(); } }