apoc.algo.aStarConfig过程
语法 |
|
||
描述 |
运行 A* 搜索算法,在两个 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
搜索的起始节点。 |
|
|
|
搜索的结束节点。 |
|
|
|
限制算法使用的关系类型。关系类型使用 APOC 的关系方向模式语法表示; |
|
|
|
{ weight = 'distance' :: STRING, default = Double.MAX_VALUE :: FLOAT, y = 'latitude' :: STRING, x = 'longitude' :: STRING, pointPropName :: STRING } |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
路径结果。 |
|
|
|
给定路径的权重。 |
|
示例
给定此数据集
CREATE (b:City {name:'Berlin', coords: point({latitude:52.52464,longitude:13.40514}), lat:52.52464,lon:13.40514})
CREATE (m:City {name:'München', coords: point({latitude:48.1374,longitude:11.5755}), lat:48.1374,lon:11.5755})
CREATE (f:City {name:'Frankfurt',coords: point({latitude:50.1167,longitude:8.68333}), lat:50.1167,lon:8.68333})
CREATE (h:City {name:'Hamburg', coords: point({latitude:53.554423,longitude:9.994583}), lat:53.554423,lon:9.994583})
CREATE (b)-[:DIRECT {dist:255.64*1000}]->(h)
CREATE (b)-[:DIRECT {dist:504.47*1000}]->(m)
CREATE (b)-[:DIRECT {dist:424.12*1000}]->(f)
CREATE (f)-[:DIRECT {dist:304.28*1000}]->(m)
CREATE (f)-[:DIRECT {dist:393.15*1000}]->(h)
可以执行以下查询(利用节点上的 lat 和 lon 属性(均为数字)、dist 关系属性以及默认成本 100):
MATCH (from:City {name:'München'}), (to:City {name:'Hamburg'})
CALL apoc.algo.aStarConfig(from, to, 'DIRECT', {weight:'dist',y:'lat', x:'lon',default:100})
YIELD weight, path
RETURN weight, path
| weight | path |
|---|---|
697430.0 |
|
或者,等效地使用 coords 节点属性(类型为 Point)进行查询,配置相同,结果也一致。请注意,如果是 3D 坐标,该过程将仅选取 x 和 y 值,或经度和纬度值。
MATCH (from:City {name:'München'}), (to:City {name:'Hamburg'})
CALL apoc.algo.aStarConfig(from, to, 'DIRECT', {pointPropName:'coords', weight:'dist', default:100})
YIELD weight, path
RETURN weight, path