Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用Dijkstra图搜索算法实现公交节点路由?_Java_Algorithm_Graph_Graph Algorithm - Fatal编程技术网

Java 如何用Dijkstra图搜索算法实现公交节点路由?

Java 如何用Dijkstra图搜索算法实现公交节点路由?,java,algorithm,graph,graph-algorithm,Java,Algorithm,Graph,Graph Algorithm,我有一个公共交通数据结构,我需要实现k条最短路径。当前,边权重只是距离 数据结构是: public class Node { public int id; public int level; } public class Edge { public int fromNodeId, toNodeId; public double distance; public double time; //might be used for quickest route

我有一个公共交通数据结构,我需要实现
k条最短路径
。当前,边权重只是距离

数据结构是:

public class Node {
    public int id;
    public int level;
}

public class Edge {
    public int fromNodeId, toNodeId;
    public double distance;
    public double time; //might be used for quickest route
}
表中的数据用于有向图。加载数据时,我将边加倍(并反转),这样图形现在就没有方向了

我正在实现标准Dijkstra,但是我需要
k条最短路径
,所以我发现

搜索按预期工作,但由于图形是传输网络,因此某些结果无效(例如,即使路径较短,更改也太多)

节点
类有一个
级别
属性,该属性到目前为止尚未使用。此属性具有值(1、2、3),其中1是级别1节点(最重要),2是级别2节点(不太重要),3是级别3节点(不重要)

有了这些现成的信息,我想知道是否有办法改进和加速搜索。。。我偶然发现了
公交节点路由
,据我所知,我需要按如下方式预计算距离:

  • 从每个节点到每个级别1节点,并保持“最近”
  • 从每个级别1到每个级别2节点,并保持“最近”
  • 从每个级别2到每个级别2节点
  • 这可以通过使用正常的Dijkstra来实现。如果我理解正确,如果我执行上述操作,那么图形将变得收缩,而无需应用其他收缩算法

    因此,在上述预计算之后,“新”边是否会添加到
    表中,以便图形具有所有这些新距离

    搜索查询是基于更新的图表的简单Dijkstra(或Yen)查询吗?如果没有,应该采用什么样的搜索算法