shortest-path相关内容

跟踪时 Prolog 中的重做是什么?

我有这段代码(迭代深化以找到最短路径): arc(a, g).弧(a,b).弧(b,g).路径(X,Z,路径):-长度(路径,_),path_r(X,Z,路径).路径_r(Z,Z,[]).path_r(X, Z, [X|路径]) :-弧(X,Y),路径(Y,Z,路径). 当我追踪它时,它给了我一条痕迹: 2 2 重做:length([],0) ? 这里发生了什么?另外,该行左侧的 2 2 ..
发布时间:2022-01-12 10:46:05 其他开发

如果我在图形节点中有 2way 关系并且节点是相互关联的,则 Neo4j 查询最短路径卡住(不起作用)

我制作了关系图两个关系,就像如果 A 知道 B 那么 B 知道 A,每个节点都有唯一的 Id 和 Name 以及其他属性......所以我的图看起来像 如果我触发一个简单的查询MATCH (p1:SearchableNode {name: "Ishaan"}), (p2:SearchableNode {name: "Garima"}),path = (p1)-[:NAVIGATE_TO*]- ..
发布时间:2021-12-28 17:09:52 其他开发

具有最小优先级队列的 Dijkstra 算法

我正在尝试使用优先队列实现 dijkstra 算法,但我无法理解它是如何工作的.我在网上阅读了很多指南,但我根本无法理解这个算法. 我的问题是:每个节点的优先级是什么?我认为它是具有最小值的传入边缘的权重,但我不确定.这是真的吗? 第二个问题,当我提取队列的根时,如果这个节点不与任何一个访问过的节点相邻,它是如何工作的? 解决方案 你应该使用priority queue,其中v ..
发布时间:2021-12-24 14:55:22 其他开发

一种具有最少遍历节点数的最短路径算法

我正在寻找 Dijkstra 的算法实现,它也考虑了遍历的节点数. 我的意思是,典型的 Dijkstra 算法会考虑连接节点的边的权重,同时计算从节点 A 到节点 B 的最短路径.我想在其中插入另一个参数.我还希望算法能够对遍历的节点数赋予一些权重. 所以从A到B计算的最短路径,在一定的值下,不一定是最短路径,而是经过节点数最少的路径. 对此有什么想法吗? 干杯, 研发 ..
发布时间:2021-12-24 14:55:14 其他开发

寻找第 k 个最短路径?

找到图中两点之间的最短路径是一个经典的算法问题,有很多很好的答案(Dijkstra 算法、Bellman-Ford 等)我的问题是是否有一种有效的算法,给定一个有向加权图、一对节点 s 和 t,以及一个值 k,找到 s 和 t 之间的第 k 条最短路径.如果有多条长度相同的路径都与第 k 个最短路径相关,则算法可以返回其中任何一条. 我怀疑这个算法可能可以在多项式时间内完成,但我知道可能会减 ..
发布时间:2021-12-24 14:47:41 其他开发

是否有不超过 x 天从 a 城市到 b 城市的路线?

我在一家贸易公司面试时,被问到这个问题, 您乘坐公共汽车穿越州,公共汽车可以停在任何 C 个可能的城市,您需要找到从城市 a 到城市 b 的方法.共有 B 辆巴士,每辆巴士都在两个城市之间行驶.所有公交车都以每日为基础运行,例如每辆公交车 x 在第 d1 天离开某个城市 c1,并在另一天 d2(d2>d1)到达另一个城市 b1.假设如果您在 d 天到达一个城市,您可以搭乘任何在 d 天或之后 ..
发布时间:2021-12-24 14:41:17 其他开发

在图中找到至少访问 X 个节点一次的最短电路

尽管我还是个初学者,但我喜欢解决与图相关的问题(最短路径、搜索等).最近我遇到了这样的问题: 给定一个具有 N 个节点和 E 个边的无向加权(无负值)图(两个节点之间最多有 1 个边,一条边只能放置在两个不同的节点之间)和一个 X 节点列表你必须访问,找到从节点 0 开始的最短路径,访问所有 X 个节点并返回节点 0.总是至少有一条路径连接任何两个节点. 限制为 1 这是一个例子: ..
发布时间:2021-12-24 14:40:07 C/C++开发

如何为 2 个节点之间的单个最短路径优化 Dijkstra 算法?

我试图在 C 语言中理解 这个实现Dijkstra 算法,同时对其进行修改,以便仅找到 2 个特定节点(源和目标)之间的最短路径. 但是,我不知道到底要做什么.在我看来,没什么可做的,我似乎无法更改 d[] 或 prev[] 导致这些数组以最短的时间聚合了一些重要数据路径计算. 我唯一能想到的就是在找到路径时停止算法,即在mini = destination标记为已访问时打破循环. ..
发布时间:2021-12-24 14:37:30 其他开发

“双向迪杰斯特拉"由 NetworkX

我刚刚阅读了使用双向搜索的最短路径 Dijkstra 算法的 NetworkX 实现(在 这个).这个方法的终止点是什么? 解决方案 我将基于 networkx 的实现. 双向 Dijkstra 在两个方向遇到同一个节点时停止——但它在那个点返回的路径可能不是通过那个节点.它正在做额外的计算来跟踪最短路径的最佳候选. 我将根据您的评论(关于这个答案)进行解释 考虑这个简单 ..
发布时间:2021-12-24 14:35:26 Python

在大图中有效地找到最短路径

我正在寻找一种方法来实时找到巨大图中节点之间的最短路径.它有数十万个顶点和数百万条边.我知道以前有人问过这个问题,我想答案是使用广度优先搜索,但我更想知道您可以使用什么软件来实现它.例如,如果它已经存在一个用于在无向图中执行 bfs 的库(带有 python 绑定!),那将是完全完美的. 解决方案 python-graph 添加: 评论让我很好奇pygraph的性能对于OP的顺 ..
发布时间:2021-12-24 14:32:43 Python

如何在dijkstra算法中保存最短路径

所以首先让我们定义 Dijkstra 算法: Dijkstra 算法在具有非负边权重的有向图中找到单源最短路径. 我想知道如何使用 Dijkstra 算法将最短路径形式从 s 保存到 t. 我在谷歌上搜索,但我找不到任何特别的东西;我也改变了 Dijkstra 算法,但我无法得到任何答案.如何使用 Dijkstra 保存从 s 到 t 的最短路径? 我知道我的问题是基本的和不专业的,但任何 ..
发布时间:2021-12-24 14:28:17 其他开发

Dijkstra vs. Floyd-Warshall:在所有节点对上寻找最佳路由

我正在阅读 Dijkstra 算法和 Floyd-Warshall 算法.我知道 Dijkstra 找到了从一个节点到所有其他节点的最佳路线,而 Floyd-Warshall 找到了所有节点配对的最佳路线. 我的问题是,如果我在每个节点上运行 Dijkstra 的算法以找到所有配对之间的最佳路线,那么它是否会比 Floyd 的算法更有效. Dijkstra 的运行时间为 O(E + V ..
发布时间:2021-12-24 14:25:04 其他开发

未加权图的最短路径(最少节点)

我正在尝试构建一种方法,该方法返回未加权图中从一个节点到另一个节点的最短路径.我考虑过使用 Dijkstra 的,但这似乎有点矫枉过正,因为我只想要一对.相反,我实施了广度优先搜索,但问题是我的返回列表包含一些我不想要的节点 - 我该如何修改代码以实现我的目标? 公共列表getDirections(节点开始,节点完成){列表方向 = new LinkedList();队列q = new Link ..
发布时间:2021-12-24 14:24:37 Java开发

寻找最短路径时,BFS 和 Dijkstra 算法之间有什么区别?

我正在阅读有关图算法的文章,我遇到了这两种算法: Dijkstra 算法 广度优先搜索 Dijkstra 算法和 BFS 在寻找节点之间的最短路径时有什么区别? 我搜索了很多关于这个但没有得到任何满意的答案! BFS 在图中寻找最短路径的规则是: 我们发现所有连接的顶点, 将它们添加到队列中,并且 存储从源 u 到该顶点 v 的距离(重量/长度). 更新从源 ..

对加权图使用 BFS

我正在修改单源最短路径算法,在视频中,老师提到BFS/DFS不能直接用于在最短路径中查找最短路径强>加权图(我想每个人都已经知道了)并说要自己找出原因. 我想知道为什么它不能用于加权图的确切原因/解释.是由于边缘的重量还是其他原因?有人可以解释一下,因为我感到有点困惑. PS:我经历了这个 问题和这个问题. 解决方案 考虑这样的图表: A---(3)-----B||\-(1) ..
发布时间:2021-12-24 14:20:11 其他开发

只有两种可能的成本的完整图.从 0 到 N - 1 的最短路径的成本是多少

给定一个有 N 个顶点的完整无向图.除了 K 条边之外,所有边的成本都是 A.那些 K 条边的成本是 B,你知道它们(作为对的列表).从节点 0 到节点 N - 1 的最小成本是多少. 2 问题很明显,当这 K 条边的成本高于其他边,并且节点 0 和节点 N - 1 由 K 边连接时. Dijkstra 不起作用.我什至尝试过与 BFS 非常相似的东西. Step1:令 G(0) 为 ..

在无权无向图中找到两个节点之间的所有最短路径

我需要帮助在无权无向图中找到两个节点之间的所有最短路径. 我能够使用 BFS 找到最短路径之一,但到目前为止,我不知道如何找到并打印出所有路径. 对我可以使用的算法/伪代码有什么想法吗? 解决方案 作为警告,请记住,图中两个节点之间的最短路径可能呈指数级数.任何算法都可能需要指数级的时间. 也就是说,有一些相对简单的算法可以找到所有路径.这是两个. BFS + 反向 ..
发布时间:2021-12-24 14:13:25 其他开发