我有一个winforms应用程序,它使用Prim算法来解决旅行商问题,我需要将邻接矩阵转换为图形,它是以DataGridView的形式实现的,可以做到吗?我试着通过在PictureBox上的随机位置放置顶点并用线连接它们来进行可视化,但没有成功。
weylhg0b1#
可以,可以将DataGridView中表示的邻接矩阵转换为TSP问题的图形。一种方法是迭代DataGridView中的单元格,并为非零值的图形添加边。关于可视化,使用专门的图形可视化库(如QuickGraph)可能更有效。以下是如何使用QuickGraph显示图形的示例:
var graph = new AdjacencyGraph<string, Edge<string>>(); graph.AddVertex("A"); graph.AddVertex("B"); graph.AddVertex("C"); graph.AddVertex("D"); graph.AddEdge(new Edge<string>("A", "B", 2)); graph.AddEdge(new Edge<string>("A", "C", 3)); graph.AddEdge(new Edge<string>("B", "C", 1)); graph.AddEdge(new Edge<string>("B", "D", 4)); graph.AddEdge(new Edge<string>("C", "D", 5)); var prim = new PrimMinimumSpanningTreeAlgorithm<string, Edge<string>>(graph); prim.Compute(); var tour = new List<string>(); foreach (var edge in prim.TreeEdges) { tour.Add(edge.Source); tour.Add(edge.Target); } var g = pictureBox1.CreateGraphics(); for (int i = 0; i < tour.Count - 1; i++) { g.DrawLine(Pens.Black, x[tour[i]], y[tour[i]], x[tour[i + 1]], y[tour[i + 1]]); }
1条答案
按热度按时间weylhg0b1#
可以,可以将DataGridView中表示的邻接矩阵转换为TSP问题的图形。一种方法是迭代DataGridView中的单元格,并为非零值的图形添加边。
关于可视化,使用专门的图形可视化库(如QuickGraph)可能更有效。
以下是如何使用QuickGraph显示图形的示例: