// Ta metoda wymaga, aby wcześniej wyliczona była nowa macierz incydencji oraz lista wierzchołków grafu public void GenerateTriangulationOfGraph() { _parameters.TriangulationOfGraph = new Graph(true);//nowy graf MatrixMethod matrixMethod = new MatrixMethod(_parameters); _parameters.verticesTriangulationOfGraph = new List <Vertex>();//lista przechowująca wierzchołki var minimumFitnessGraphIndex = _parameters.FitnessArray.ToList().IndexOf(_parameters.FitnessArray.Min()); var graphFromCaran = GenerateGraphFromCaranWithCuts( _parameters.GeneratedBasicGraph, _parameters.Population, minimumFitnessGraphIndex ); var groupsVertices = GraphGenerationMethods.GetGroupsVertices( graphFromCaran, _parameters.Population, minimumFitnessGraphIndex); VertexMethod.AddVertexGroupInfo( graphFromCaran, groupsVertices ); _parameters.TriangulationOfGraph = graphFromCaran; _parameters.verticesTriangulationOfGraph = graphFromCaran.Vertices.ToList(); }
public void GenerateBasicGraph() { MatrixMethod matrixMethod = new MatrixMethod(_parameters); _parameters.GeneratedBasicGraph = new Graph(true); //nowy graf _parameters.verticesBasicGeneratedGraph = new List <Vertex>(); //lista przechowująca wierzchołki _parameters.incidenceMatrix = matrixMethod.FillIncidenceMatrix(); //macierz incydencji _parameters.weightsMatrix = matrixMethod.FillWeightsMatrix(); //macierz incydencji //wygenerowanie odpowiedniej ilości wierzchołków for (int i = 0; i < _parameters.NumberOfVertices; i++) { _parameters.verticesBasicGeneratedGraph.Add(new Vertex((i + 1).ToString(), i)); _parameters.GeneratedBasicGraph.AddVertex(_parameters.verticesBasicGeneratedGraph[i]); } //generowanie krawędzi na podstawie macierzy EdgeMethod.GenerateEdges(_parameters.incidenceMatrix, _parameters.verticesBasicGeneratedGraph, _parameters.GeneratedBasicGraph); //suma jest zapisana w ostatniej kolumnie macierzy oraz we właściwości obiektu vertex(VertexDegree)<=potrzebne w naprawie VertexMethod.CalculateTheSum(_parameters.incidenceMatrix, _parameters.verticesBasicGeneratedGraph); //zapisanie wierzołków sąsiadujących ze sobą(potrzebne w naprawie) VertexMethod.SetVertexNeighbors(_parameters.incidenceMatrix, _parameters.verticesBasicGeneratedGraph); _parameters.UndirectedBasicGraph = new UndirectedBidirectionalGraph <Vertex, Edge>(_parameters.GeneratedBasicGraph);//coś jak canvas EdgeMethod.AddWeightsToGraph(_parameters.GeneratedBasicGraph, _parameters.weightsMatrix); EdgeMethod.AddWeightsTooltip(_parameters.GeneratedBasicGraph); matrixMethod.RefreshMatrixUi(_parameters.GeneratedBasicGraph); }