OrientDB:最短路径中的边

Posted

技术标签:

【中文标题】OrientDB:最短路径中的边【英文标题】:OrientDB: Edges in shortestPath 【发布时间】:2015-04-05 10:20:32 【问题描述】:

我的图表如下所示:

A --1--> B --2--> C --3--> D

|
4
|
V

E

我想获得从 A 到 D 的最短路径。但我不需要顶点,而是构成路径的边。

来自here 我最终得到:

 select expand(shortestPath) from (select shortestPath(A, D).outE())

但结果不仅包含正确的答案 1、2、3,还包含 4,因此构成路径的顶点的所有出边。

我怎样才能只得到构成最短路径的边? 如果有几条最短路径,我怎样才能获得所有路径?

如果我可以选择最短路径或 dijkstra 作为遍历策略,那就太酷了。国际海事组织这是他们所属的地方。

【问题讨论】:

【参考方案1】:

OrientDB 已经有 dijkstra 功能。但是只过滤边缘:

select from (select expand( shortestPath(A, D) ) ) where @this instanceof 'E'

【讨论】:

按照您的建议进行扩展会返回 0 条记录。像这样的扩展有效:select from (select expand(shortestPath) from (select shortestPath(#13:0, #13:2))) where @this instanceof 'E' 但是使用 where 子句它返回 0 条记录。我正在使用orientdb-community-2.0-rc1,但这不重要吗?! 使用 2.1.7-SNAPSHOT,select expand(shortestpath(...)) 只返回顶点。 @pat 是对的,A 和 D 应该替换为节点 ID,如 pat 回复。 tnx

以上是关于OrientDB:最短路径中的边的主要内容,如果未能解决你的问题,请参考以下文章

图的最短路径和拓扑排序

在解决最短路径优化问题中,Dijkstra算法都有哪些优.缺点?

[CSUOJ1808] 地铁(dijkstra,堆,边最短路)

poj3613Cow Relays——k边最短路

[516数据]R语言:最短路径之Dijkstra算法

luogu4366 [Code+#4]最短路[优化建边最短路]