196得票13回答
为什么Dijkstra算法不能处理负权重边?

请问为什么Dijkstra算法用于单源最短路径时假设边的权值必须非负。 我指的是只有边没有负权重环的情况。

176得票9回答
当寻找最短路径时,广度优先搜索如何工作?

我进行了一些研究,但好像还少了这个算法中的一个小部分。我了解广度优先搜索是如何工作的,但不明白它确切地如何帮我找到一条特定的路径,而不仅仅告诉我每个节点可以去哪里。我想最容易说明我的困惑的方法是提供一个例子: 例如,假设我有一个如下所示的图形: 我的目标是从A到E(所有边都没有权重)。 我从...

131得票9回答
Dijkstra算法中如何处理负权重

我正在尝试理解为什么Dijkstra算法不能处理带有负权重的情况。在最短路径的示例中,我试图弄清以下情况: 2 A-------B \ / 3 \ / -2 \ / C 从网站上看: 假设所有边都从左到右有向,如果我们从A开始,Dijkstra算法将...

107得票19回答
国际象棋棋盘上的骑士最短路径问题

我正在为一场即将到来的编程比赛而练习,遇到了一个问题,让我感到十分困惑。然而,我觉得这是一个我现在应该学习的概念,而不是抱着侥幸心理等待它从未出现。 基本上,它涉及到国际象棋棋盘上的马。你会得到两个输入:起始位置和结束位置。目标是计算并打印出马到达目标位置的最短路径。 我从未接触过最短路径...

73得票8回答
贝尔曼-福德算法与迪杰斯特拉算法:在什么情况下贝尔曼-福德更好?

在做了大量谷歌搜索后,我发现大多数来源都表示Dijkstra算法比Bellman-Ford算法“更高效”。但是在什么情况下,Bellman-Ford算法比Dijkstra算法更好? 我知道“更好”是一个广泛的说法,所以具体来说,我指的是速度和空间(如果适用)方面。肯定有一些情况下,Bellm...

72得票9回答
非常大的图形A*算法,对于缓存快捷方式有什么想法?

我正在使用OpenStreetMap地图编写一款快递/物流模拟器,发现像下面这样的基本A*算法对于大型地图(如伦敦市区)并不够快。 绿色节点对应于被放入开放集/优先队列中的节点,由于数量巨大(整个地图大约有100-200万个节点),要找到如图所示的路径需要约5秒钟左右。但很遗憾,每条路线的最...

68得票5回答
寻找最短路径时,BFS算法和Dijkstra算法有什么区别?

我在阅读关于图算法的内容时,发现了这两个算法: 迪杰斯特拉算法(Dijkstra's algorithm) 广度优先搜索(Breadth-first search) 在查找节点之间的最短路径时,Dijkstra算法和BFS有什么区别? 我搜索了很多关于这个问题的内容,但都没有得到令人满意的...

50得票3回答
使用BFS算法处理带权图

我正在复习单源最短路径算法,视频中老师提到BFS/DFS不能直接用于在一个加权图中找到最短路径(我想每个人都知道这点),并且建议自己找出原因。 我想知道为什么它不能用于加权图的确切原因/解释。是由于边的权重还是其他原因?有人能够解释一下吗? 我感到有些困惑。 PS:我查阅了这个问题和这个问题。

36得票8回答
如何在网格中计算两点之间的最短路径

我知道有许多算法可以计算图或网格中两点之间的最短路径,例如广度优先搜索、全源最短路径(Floyd)和Dijkstra算法。 然而,我注意到所有这些算法都会计算该图或网格中的所有路径,而不仅仅是我们感兴趣的两个点之间的路径。 我的问题是: 如果我有一个网格,即一个二维数组,并且我想计算两个点...

35得票7回答
在无权无向图中查找两个节点之间的所有最短路径

我需要帮助在一个 无权无向图 中找到两个节点之间所有的最短路径。 使用广度优先搜索(BFS)可以找到其中一条最短路径,但是我不知道如何找到并打印出所有最短路径。 请问有什么算法/伪代码可以使用吗?