Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
Neo4j 是否有可能通过使用Cypher或Gremlin获得具有遍历代价的最短路径?_Neo4j_Cypher_Gremlin - Fatal编程技术网

Neo4j 是否有可能通过使用Cypher或Gremlin获得具有遍历代价的最短路径?

Neo4j 是否有可能通过使用Cypher或Gremlin获得具有遍历代价的最短路径?,neo4j,cypher,gremlin,Neo4j,Cypher,Gremlin,我知道使用Cypher和Gremlin可以获得最少节点数的最短路径?以最小的遍历代价获得一条路径如何?我能想到的一个例子是公共汽车路线。有些路线可能有较少的公交站点节点,但从一个站点到另一个站点需要更长的时间成本,有些则相反 使用Cypher或Gremlin是否可以以最短的行程时间获得最短的路径?您可以查看并使用此选项: ,org.neo4j.graphalgo.CostEvaluator 下面是一些测试,展示了您可能可以使用的其他内置算法 要使用自己的算法,您可以调用neo4j java ap

我知道使用Cypher和Gremlin可以获得最少节点数的最短路径?以最小的遍历代价获得一条路径如何?我能想到的一个例子是公共汽车路线。有些路线可能有较少的公交站点节点,但从一个站点到另一个站点需要更长的时间成本,有些则相反


使用Cypher或Gremlin是否可以以最短的行程时间获得最短的路径?

您可以查看并使用此选项:

,org.neo4j.graphalgo.CostEvaluator

下面是一些测试,展示了您可能可以使用的其他内置算法

要使用自己的算法,您可以调用neo4j java api,甚至gremlin/groovy管道,如下所示:


您可以查看并使用此选项:

,org.neo4j.graphalgo.CostEvaluator

下面是一些测试,展示了您可能可以使用的其他内置算法

要使用自己的算法,您可以调用neo4j java api,甚至gremlin/groovy管道,如下所示:

有关最短路径的更多信息,请参见另一个。但是,为了回答这个特定的问题,计算路径的成本,我首先修改了路径,使从marko到josh到lop的权重比从marko到lop的权重便宜:

然后计算marko和lop之间路径的成本:

gremlin> g.v(1).outE.inV.loop(2){it.object.id!="3" && it.loops< 6 }.path.transform{[it.findAll{it instanceof Edge}.sum{it.weight}, it]}
==>[0.4, [v[1], e[9][1-created->3], v[3]]]
==>[0.20000000298023224, [v[1], e[8][1-knows->4], v[4], e[11][4-created->3], v[3]]]
所以请注意,路径长度3通过marko到josh到lop比marko到lop便宜。无论如何,小精灵基本上说:

g、 v1.outE.inV.loop2{it.object.id!=3&&it.loops<6}.path-获取marko和lop之间的路径。 .transform{[it.findAll{it instanceof Edge}.sum{it.weight},it]}-将每个路径转换为一个列表,其中第一个值是权重属性的和,第二个值是路径列表本身。我在路径列表本身上使用一点groovy计算总权重,方法是查找路径中的所有边,然后将它们的权重值相加。 有关最短路径的更多信息,请参见另一个。但是,为了回答这个特定的问题,计算路径的成本,我首先修改了路径,使从marko到josh到lop的权重比从marko到lop的权重便宜:

然后计算marko和lop之间路径的成本:

gremlin> g.v(1).outE.inV.loop(2){it.object.id!="3" && it.loops< 6 }.path.transform{[it.findAll{it instanceof Edge}.sum{it.weight}, it]}
==>[0.4, [v[1], e[9][1-created->3], v[3]]]
==>[0.20000000298023224, [v[1], e[8][1-knows->4], v[4], e[11][4-created->3], v[3]]]
所以请注意,路径长度3通过marko到josh到lop比marko到lop便宜。无论如何,小精灵基本上说:

g、 v1.outE.inV.loop2{it.object.id!=3&&it.loops<6}.path-获取marko和lop之间的路径。 .transform{[it.findAll{it instanceof Edge}.sum{it.weight},it]}-将每个路径转换为一个列表,其中第一个值是权重属性的和,第二个值是路径列表本身。我在路径列表本身上使用一点groovy计算总权重,方法是查找路径中的所有边,然后将它们的权重值相加。