使用Dijkstra和Neo4j的动态图

时间:2014-06-08 15:38:05

标签: algorithm graph neo4j

让我们说我想从奥兰治县开车去布鲁克林。让我们说我可以通过耶路撒冷。热潮。

我的图表如下:

(Orange County) -> (Jerusalem) -> (Brooklyn)
    \---------------------------------/

一切都很棒,我可以在30分钟内从奥兰治县开车到耶路撒冷。从耶路撒冷到布鲁克林也是30分钟!如果我中午开车,我会在一小时内到达! 1小时的驾驶。漂亮的。

但这不是现实生活。在现实生活中,我会开车30分钟,然后我可能会遇到交通繁忙的情况,可以把我抱在车上好几天! (好吧,那样的)。 如果我知道我要处理繁忙的交通,我可能根本不想去耶路撒冷。

假设我有一个“timeToArrive”属性,它只是一个数组,分为四分之一(00:00 => arr[0], 00:15 => arr[1]等) 我如何使用Dijkstra或任何其他工具来了解我应该采用哪条路径?

我应该构建自己的算法吗? (“Dijkstra随着时间的推移”或某事......)

我说的是这样的话:http://www.slideshare.net/neo4j/graph-connect-v5

谢谢你们!

2 个答案:

答案 0 :(得分:0)

嗨我认为你应该使用Dijkstra函数g((u,v),t)= f(u,v)+ h(t)而t是你做出路由决定的当前时间(u,v)是从u到v的边缘,f(u,v)是从u到v而没有交通t的近似时间。 接下来对于h(t),您可以执行以下操作之一 1.在时间t创建一个从u到v的近似时间的db 2.使用实时路况更新 3.计算一些用于流量计算的启发式天才:)

现在使用Dijkstra很难我更喜欢使用A *和时间在没有交通的情况下通过知识图表进行启发式

答案 1 :(得分:0)

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

真棒。