// 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);
        }