1. 首页
  2. 编程语言
  3. C#
  4. C#最短路径算法:Dijkstra

C#最短路径算法:Dijkstra

上传者: 2025-05-31 08:57:06上传 RAR文件 17.29KB 热度 1次

C#的图算法里,Dijkstra算是老熟人了,找最短路径挺管用,思路也不绕。用 C#撸起来其实也不复杂,定义个节点类加上邻接表,逻辑就顺了。关键点就俩:一个是贪心地挑最近的节点,一个是用优先队列提高效率。写的时候注意下优先队列的使用,比如用PriorityQueue,别忘了及时更新距离。

初始化部分挺简单,所有节点先设成无穷大,源点设 0,丢进队列。

distances[source] = 0;
queue.Enqueue(source, 0);

循环节点,每次取出当前最短的,如果没过,就拿它的邻居更新一波最短路径。

var newDistance = distances[currentNode.Id] + weight;
if (newDistance < distances[neighbor]) {
  distances[neighbor] = newDistance;
  queue.UpdatePriority(neighbor, newDistance);
}

这种方式在像地图导航、网络节点、甚至一些游戏路径规划时都蛮实用的。你要是做这类项目,手里没个Dijkstra真的不太踏实。

想看完整代码或者打包例子,可以去这些链接看看:

如果你刚好在用 C#写图相关的东西,又需要算最短路径,那这套Dijkstra实现还挺值得参考,逻辑清楚,结构也还行,改改就能用上。

下载地址
用户评论