示例#1
0
        private BidirectionalGraph <DataVertex, DataEdge> GenerateGraph(int[,] matrix)
        {
            var dataGraph = new GraphData();

            List <string> colours = new List <string>()
            {
                "Gray", "AntiqueWhite", "Aquamarine", "CornflowerBlue", "BurlyWood", "Cyan", "DarkSeaGreen", "Crimson", "GreenYellow", "IndianRed", "LightBlue", "LightGreen", "LightPink", "LightSalmon", "Teal", "MistyRose", "PaleTurquoise", "RosyBrown", "Peru", "SpringGreen"
            };

            for (int i = 0; i < G1.IncidenceMatrix.GetLength(0); i++)
            {
                var vertex = new DataVertex($"V:{i} K:{G1.Vertices[i].Color}");
                vertex.Id    = i;
                vertex.Color = colours[G1.Vertices[i].Color];
                dataGraph.AddVertex(vertex);
            }

            var vlist = dataGraph.Vertices.ToList();

            for (int i = 0; i < G1.IncidenceMatrix.GetLength(0); i++)
            {
                for (int j = 0; j < G1.IncidenceMatrix.GetLength(1); j++)
                {
                    if ((G1.IncidenceMatrix[i, j] == G1.IncidenceMatrix[j, i]) && G1.IncidenceMatrix[i, j] == 1)
                    {
                        var edge = new DataEdge(vlist[i], vlist[j]);
                        edge.Id    = i;
                        edge.Color = "Black";
                        dataGraph.AddEdge(edge);
                    }
                }
            }

            Area.GenerateGraph(true, true);
            return(dataGraph);
        }