簡體   English   中英

最小生成樹快速圖

[英]Minimum Spanning Tree quick graph

我想使用快速圖找到下圖的最小生成樹。 我完成了所提供的手冊,但我真的不明白該怎么做。 這是我的代碼:

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

謝謝您的幫助。

@daryal打敗了我 - 我的版本是:

var mst = g.MinimumSpanningTreePrim(e => e.Tag).ToList();  

在此輸入圖像描述

“使用源Luke” - 我查看了MinimumSpanningTreeTest.cs,測試了Prim12273

(你也可以在Lambda / Delegates上查看這個問題,以便更好地理解基本函數指針)

假設TaggedUndirectedEdgeTag (last)參數暗示邊緣的edgeWeight,則以下可能有效。

Func<TEdge, double> edgeWeights = (q) => {
g.Edges.SingleOrDefault(m => q == m).Tag;
}

IEnumerable<TEdge> mst = g.MinimumSpanningTreePrim(g, edgeWeights);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM