Dijkstra算法实现的最佳数据结构是什么? C#

时间:2013-01-14 22:06:44

标签: c# dijkstra

我正在用C#.NET编程。在实现Dijkstra算法时,通常使用优先级队列或堆来计算下一个要访问的节点。不幸的是,C#本身并不提供这些数据结构。我不能,我不想在数组上实现Dijkstra(这个更慢)。什么是最好的选择?

3 个答案:

答案 0 :(得分:1)

有几种可用的.NET优先级队列实现,包括这个

http://www.itu.dk/research/c5/

PowerCollections提供了很多基类库中没有的集合类,不过这个答案中的注释

https://stackoverflow.com/a/102434/141172

表明PowerCollections中的优先级队列没有得到最佳实现。

答案 1 :(得分:1)

从.NET 2.0开始,您可以使用SortedDictionary<K,V>来实现优先级队列。它的Keys属性返回有序集合。您可以提取其第一个项目以获取表示“下一个最佳”边缘的条目的键。 V必须是List<T>,其中T是您在Dijkstra队列中存储的元素。

答案 2 :(得分:1)

您可以查看此链接。它支持使用C# Generics

实现最短路径算法