我想使用快速图找到下图的最小生成树。我完成了所提供的手册,但我真的不明白该怎么做。 这是我的代码:
static void Main(string[] args)
{
var g = new UndirectedGraph<int, TaggedUndirectedEdge<int,int>>();
var e1 = new TaggedUndirectedEdge<int, int>(1, 2, 57);
var e2 = new TaggedUndirectedEdge<int, int>(1, 4, 65);
var e3 = new TaggedUndirectedEdge<int, int>(2, 3, 500);
var e4 = new TaggedUndirectedEdge<int, int>(2, 4, 1);
var e5 = new TaggedUndirectedEdge<int, int>(3, 4, 78);
var e6 = new TaggedUndirectedEdge<int, int>(3, 5, 200);
g.AddVerticesAndEdge(e1);
g.AddVerticesAndEdge(e2);
g.AddVerticesAndEdge(e3);
g.AddVerticesAndEdge(e4);
g.AddVerticesAndEdge(e5);
g.AddVerticesAndEdge(e6);
foreach (var v in g.Edges)
Console.WriteLine(v);
}
感谢您的帮助。
答案 0 :(得分:3)
@daryal打败了我 - 我的版本是:
var mst = g.MinimumSpanningTreePrim(e => e.Tag).ToList();
“使用源Luke” - 我查看了MinimumSpanningTreeTest.cs,测试了Prim12273
(你也可以在Lambda's / Delegates上查看这个问题,以便更好地理解基本函数指针)
答案 1 :(得分:1)
假设Tag
的{{1}}(最后)参数暗示边缘的edgeWeight,则以下内容可能有效。
TaggedUndirectedEdge