Tag: 最短路径

k-shortest(替代)路径算法,java实现

你能推荐任何实现k-shortest算法的java库 – >搜索替代方法,而不是定向多图中唯一最短的方法吗? 我发现只有JGraphT,但实际上有bug(我提交了)但是我需要花很多时间修复它,是否有其他可用的实现? 除了JGraphT,我发现只有小型单人项目:/ 或者很难修改Disjktra最短路径alg以显示替代路径? 谢谢

是否有任何双向搜索Dijkstra算法的实现?

我正在寻找Java中Dijkstra(或任何其他源到目的地最短路径算法)的双向搜索(也称为“中间相遇”算法)的实现。 由于双向搜索处理比它看起来更棘手( 图算法,第26页 ),我想在重新发明轮子之前考虑现有的实现! PS:我说的是双向搜索 ,不要与双向图混淆) 这是一个棘手的图表示例:

2d数组中的最短路径

*…*..D .G..*….. **…**. .S….*. …….. …G**.. …….. .G..*… 这是2d数组在哪里 S-来源 d-目的地 必须访问G-Point “。”自由路径 “*”阻止路径 你能帮助我,这是找到java中最短路径长度的有效算法 只能进行水平和垂直移动

扭曲的最短路径

我有n个顶点和m无向加权边(重量代表分钟)。 每个顶点包含在该顶点上喝咖啡所需的分钟数。 我想确定从顶点v到顶点w所需的最短时间(分钟),但是我必须在从v到w路上的一个顶点上喝咖啡。 示例 : (顶点中的数字是喝咖啡所需的分钟数,边缘上的重量表示行进此边缘所需的分钟数) 从v到w并在途中喝咖啡,输出最小的必要时间(输出应为30)。 我目前的方法是找到Dijkstra的最短路径(总结该路径上所有边的权重),然后将该路径上具有最低咖啡时间的顶点值添加到我的结果中,以获得总量从v到w必要时间。 我的方法不起作用,这是我的方法失败的一个例子(我的方法的结果是12分钟,实际结果应该是6分钟): 如何确定从顶点v到w的最短时间,以及我需要在路径上喝咖啡的约束?

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

我正在尝试构建一个方法,在未加权的图形中返回从一个节点到另一个节点的最短路径。 我考虑过使用Dijkstra,但这似乎有点矫枉过正,因为我只想要一对。 相反,我已经实现了广度优先搜索,但问题是我的返回列表包含一些我不想要的节点 – 如何修改我的代码以实现我的目标? public List getDirections(Node start, Node finish){ List directions = new LinkedList(); Queue q = new LinkedList(); Node current = start; q.add(current); while(!q.isEmpty()){ current = q.remove(); directions.add(current); if (current.equals(finish)){ break; }else{ for(Node node : current.getOutNodes()){ if(!q.contains(node)){ q.add(node); } } } } if (!current.equals(finish)){ System.out.println(“can’t reach destination”); } return directions; }