gpt4 book ai didi

neo4j - 我怎样才能得到最短路径密码查询?

转载 作者:行者123 更新时间:2023-12-04 23:57:00 31 4
gpt4 key购买 nike

我在这里使用 cypher 语句创建了一个 Neo4j 数据库:https://gist.github.com/neoecos/8748091

我想知道:如何获得: 1.less Transfer Paths (order by transfer) 2.最短路径(按路径长度排序) 3.最优路径(更少的Transfer和最短路径)

请给出相应的查询。你认为这是创建公交查询系统的最佳方式吗?非常感谢。

最佳答案

最短路径非常简单:

MATCH path=shortestPath((station_44:STATION {id:44})-[*0..10]-(station_46:STATION {id:46}))
RETURN path

就计算传输而言,您可以执行以下操作:

MATCH path=allShortestPaths((station_44:STATION {id:44})-[rels*0..10]-(station_46:STATION {id:46}))
RETURN length(path) AS stop_count, length(FILTER(index IN RANGE(1, length(rels)-1) WHERE (rels[index]).bus <> (rels[index - 1]).bus)) AS transfer_count

一旦你有了这两个变量,你就可以按照你喜欢的方式计算/排序。例如:

MATCH path=(station_44:STATION {id:44})-[rels*0..4]-(station_46:STATION {id:46})
WITH length(path) AS stop_count, length(FILTER(index IN RANGE(1, length(rels)-1) WHERE (rels[index]).bus <> (rels[index - 1]).bus)) AS transfer_count
RETURN stop_count, transfer_count
ORDER BY (stop_count * 0.5) + (transfer_count * 2.0) DESC

我在这里删除了 allShortestPaths 调用,以便您获得不同长度的路径。 ORDER BY 使用两个指标的权重。不幸的是,至少在我的数据库中,如果路径长度超过四,它就会开始变得非常慢。如果对您的情况有意义,您可以通过在路径中引入方向箭头来改进这一点。

关于neo4j - 我怎样才能得到最短路径密码查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33063408/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com