[英]Boost dijkstra shortest_path - how can you get the shortest path and not just the distance?
[英]ArangoDB : how to do a shortest_path filtering on edges
我正在使用ArangoDB 3.0,我想创建一个AQL查询,以获得从A到B的最短路径,深度= 3,过滤一些边缘属性。
查询的“ArangoDB 2.0”版本,如下所示:
FOR e IN GRAPH_SHORTEST_PATH('CityGraph', 'city/rome', 'city/turin',
{
edgeExamples: [{filterProperty: 'FIRST'}, {filterProperty: 'SECOND' }]}
)
我阅读了有关arangoDB 3.0( https://docs.arangodb.com/3.0/AQL/Graphs/ShortestPath.html )的文档,它说:
条件最短路径
SHORTEST_PATH计算只能找到无条件的最短路径。 使用此构造,无法定义如下条件:“查找所有边都是X类型的最短路径”。 如果要执行此操作,请使用常规遍历,而使用选项{bfs:true}和LIMIT 1 。
那么,有人能告诉我我可以做什么类型的AQL查询吗? 根据建议,我写这个:
FOR n,e IN 1..3 ANY'city / rome'GRAPH'CityGraph'OPTIONS {bfs:true} FILTER e.filterProperty IN ['FIRST','SECOND'] LIMIT 1 return {n,e}
但它只返回图形深度的第一级,而不是n的深度。
先感谢您。
最好的祝福,
丹尼尔
使用LIMIT 1
指定限制AQL的结果集以获得最短路径。
上述查询的翻译应如下所示:
FOR n, e, p IN 1..3 ANY 'city/rome'
GRAPH 'CityGraph'
OPTIONS {bfs: true}
FILTER p.edges[*].filterProperty ALL IN ['FIRST', 'SECOND']
FILTER n._key == 'turin'
LIMIT 1
RETURN {n, e}
FIRST
或SECOND
,如果没有传递这两个边之一的边,则丢弃此路径。 turin
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.