Algorithm 具有Dijkstra和Neo4j的动态图

Algorithm 具有Dijkstra和Neo4j的动态图,algorithm,graph,neo4j,Algorithm,Graph,Neo4j,假设我想开车从奥兰治县到布鲁克林。假设我可以穿过耶路撒冷。轰 我的图表如下所示: (Orange County) -> (Jerusalem) -> (Brooklyn) \---------------------------------/ 这真是太棒了,我可以在30分钟内从奥兰治县开车到杰苏萨勒姆。从耶路撒冷到布鲁克林也需要30分钟!如果我中午开车,我会在一小时内到达那里!!1小时的驾驶时间。很漂亮 但那不是真实的生活。在现实生活中,我会开车30分钟,然后我可能会遇到拥

假设我想开车从奥兰治县到布鲁克林。假设我可以穿过耶路撒冷。轰

我的图表如下所示:

(Orange County) -> (Jerusalem) -> (Brooklyn)
    \---------------------------------/
这真是太棒了,我可以在30分钟内从奥兰治县开车到杰苏萨勒姆。从耶路撒冷到布鲁克林也需要30分钟!如果我中午开车,我会在一小时内到达那里!!1小时的驾驶时间。很漂亮

但那不是真实的生活。在现实生活中,我会开车30分钟,然后我可能会遇到拥挤的交通,这会让我在车里呆上好几天!嗯,差不多吧。 如果我知道我要处理繁忙的交通,我可能根本不想去耶路撒冷

让我们假设我有一个timeToArrive属性,它只是一个数组,分为四分之一00:00=>arr[0],00:15=>arr[1],等等。 我如何使用Dijkstra或任何其他工具来知道我应该走哪条路

我应该建立自己的算法吗?Dijkstra随着时间的推移或其他什么

我说的是这样的事情:


谢谢大家

您好,我认为您应该使用Dijkstra函数gu,v,t=fu,v+ht,而t是您正在进行路由决策的当前时间,u,v是从u到v的边缘,fu,v是从u到v的近似时间,没有流量t。 接下来,对于ht,您可以执行以下操作之一 1.在时间t从u到v创建一个近似时间db 2.使用实时流量更新 3.计算流量计算的一些奇怪的天才启发式:


现在使用Dijkstra-tough我更喜欢使用带时间旅行的*启发式图,而不是不带流量的已知图

经过一些研究,我发现了可以使用有状态实现的PathExpander接口


太棒了。

你能举个具体的例子吗?是否根据概率给出了交通场景?您想尽量缩短预期到达时间吗?如果你有一个包含所有数字的完整示例问题,那就更容易理解了。@abhishek在进行搜索之前,所有的交通数据都是已知的。我只想每次给这个关系一个正确的权重。因此,如果部门在00:00,图形是OC-[30min]->耶路撒冷-[Xmin]->布鲁克林,它将在00:30重新计算X的权重是的,开始时我修改了Dijkstra实现,但后来我找到了PathExpander,我可以检查AStar算法是否更好。我为此写了一个插件。