繁体   English   中英

使用堆栈查找加权图的最短路径

[英]Finding Shortest Paths of weighted graph using stacks

我将得到这种图形的某种形式,如下图所示。 我已经搜索了一些算法,但似乎无法解决它们。 实际上,使用Floyd-Warshall算法是有可能的,但是不幸的是,我只允许使用堆栈(而不是矩阵)。 我还寻找了Dijkstra的算法,但是无法解决问题。 图片

显然,我的目标是使所有最短的路径从一个点到达另一点。 正如我提到的,我将以向量字符串的形式从堆栈中输出解决方案。 我想我必须访问每个节点,而我最担心的是在搜索过程中堆积成一个循环甚至失去轨道。 另请注意,这不是有向图 如果Dijkstra的算法在这里适用,那么如果有人指导我,我将不胜感激,我将非常感谢您提供的任何帮助,建议,想法,甚至是在搜索时不会陷入混乱或失去轨道的愿景。

提前致谢。

如果您只想获得从某个选定节点到所有其他节点的所有最短路径的值,则可以使用Dijkstra算法-它基本上是增强BFS。 一旦您了解了BFS背后的想法,您对Dijkstra的理解就不会有任何问题。 实际上,用单个queue实现BFS比使用arrays要容易得多。 您必须使用stacks是否有一些正式的要求(学校吗?)。 如果是这样的话,那是很奇怪的。。。但是,您仍然可以用完全无效的方式模拟一个有两个stacksqueue

(顺便说一下,DFS使用堆栈)

如果要拥有从所有节点到所有其他节点的所有最短路径,则可以从每个节点运行Dijkstra,也可以尝试使用Bellman-Ford,它虽然速度更快,但较难掌握。

如果只想从单个节点到其他节点的最短路径,则(位扩展)双向BFS将是最佳选择。

如果您有Silverlight插件,则可以50%的试用率来尝试这个小应用程序,该程序由我编写: http : //grzesiaka.home.pl/GraphTutor/,您会发现您对算法感兴趣的步骤逐步展示(数据结构和伪代码)。 希望它能对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM