Neo4j dijkstra,预计算成本

Neo4j dijkstra,预计算成本,neo4j,Neo4j,我正在构建一个类似于directions的应用程序,并使用Neo4j作为我的数据库 我一直在努力寻找一个解决方案,可以帮助我在Neo4j中做我想做的事情。我找了很多东西,却找不到我需要的东西 用户可以选择起点和终点,并对生成路径的方式进行成本化。将根据距离、污染和噪音生成路径(最短路径)。用户将能够为这三个选项分配百分比。 举个例子: 计算最短路径的成本为:成本=(距离*0.25)+(噪音级别*0.25)+(污染级别*0.5) 这意味着关系成本属性将始终是动态的 我正在使用apoc.algo.d

我正在构建一个类似于directions的应用程序,并使用Neo4j作为我的数据库 我一直在努力寻找一个解决方案,可以帮助我在Neo4j中做我想做的事情。我找了很多东西,却找不到我需要的东西

用户可以选择起点和终点,并对生成路径的方式进行成本化。将根据距离、污染和噪音生成路径(最短路径)。用户将能够为这三个选项分配百分比。 举个例子: 计算最短路径的成本为:成本=(距离*0.25)+(噪音级别*0.25)+(污染级别*0.5) 这意味着关系成本属性将始终是动态的

我正在使用apoc.algo.dijkstra程序来帮助我。但是dijkstra只允许我给出关系属性的名称。有办法吗? 两个节点之间的关系示例:

{ “交叉节点”:25632284, “污染水平”:2, “交叉点距离”:0.0, “噪音水平”:5, “成本”:0 }


我是Neo4j的新手,任何帮助都将不胜感激。抱歉出现任何英语错误。

解决方法是:

(1) 在每个相关关系中生成新的计算权重特性

(2) 使用计算权重属性运行dijkstra查询

(3) (可选)删除计算重量特性。(如果未删除它们,它们的值可能会随着时间的推移而变得无效,因此不应重复使用这些值。)

您可以查看一个高性能的内存事务图数据库。Memgraph是一个简单且兼容的应用程序。(免责声明:我是联合创始人兼首席技术官)。Memgraph内置加权最短路径功能,通过用户定义的lambda函数计算总权重。针对您的情况,并基于此数据集

CREATE (n1 {id: 1}) CREATE (n2 {id: 2}) CREATE (n3 {id: 3}) CREATE (n4 {id: 4})
CREATE (n1)-[:E {pollution_level: 1, distance: 1.0, noise_level: 5}]->(n2)
CREATE (n1)-[:E {pollution_level: 2, distance: 2.0, noise_level: 4}]->(n3)
CREATE (n2)-[:E {pollution_level: 3, distance: 2.0, noise_level: 3}]->(n4)
CREATE (n3)-[:E {pollution_level: 4, distance: 1.0, noise_level: 2}]->(n4);
相关Memgraph的查询与此类似

  MATCH (a {id: 1})-[
            edges *wShortest
                (e, n | (e.distance * 0.25) +
                (e.noise_level * 0.25) +
                (e.pollution_level * 0.5))
            total_weight
        ]-(b {id: 4})
  RETURN startNode(head(edges)).id +
         reduce(acc = "", edge IN edges | acc + " -> " + endNode(edge).id) AS hops,
         total_weight;
结果如下

| hops      | total_weight |
|-----------|--------------|
|1 -> 2 -> 4| 4.75         |

嗨,赛博山姆。多谢各位。这正是我想要的;)祝您今天过得愉快!