具有Neo弹簧靴的Dijkstra算法

时间:2018-01-29 12:29:54

标签: java spring-data-neo4j neo4j-ogm

我想问一下,我怎么能用Spring引导找到Dijkstra。

我目前使用spring-boot-starter-data-neo4j库将Neo4j映射到我的java类。

我想现在使用org.neo.graphalgo graphalgo库中的Dijkstra和所有路径算法。

有可能这样做吗?或者同样可以理解任何其他替代方式。

EDIT ------------------------

我已经将我的所有Neo4j节点映射为Java中的以下内容并且它们可以正常工作。我现在只想使用你提到的graphalgo库。我很困惑,现在我可以使用它。

btw所有代码都在这里:https://github.com/aamalik/neo4j-gtfs

@NodeEntity
public class Stop {
    @GraphId
    private Long id;

    @Property(name="name")
    private String name;

    @Property(name="lon")
    private double longitude;

    @Property(name="lat")
    private double latitude;

    @Property(name="id")
    private String stopId;
}

2 个答案:

答案 0 :(得分:1)

要为Neo4j使用图算法,您需要neo4j-graph-algo maven依赖。但是根据Spring Boot Dependency versions没有提供它,所以你必须手动将它包含在POM文件的依赖项部分中:

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-graph-algo</artifactId>
    <version>3.3.2</version>
</dependency>

现在,您可以使用GraphAlgoFactory提供的methods来计算 start node end 节点之间最便宜的路径:

public Path calculateCheapestPath(Node start, Node end) {
    PathFinder<WeightedPath> finder = GraphAlgoFactory.dijkstra(PathExpanders.allTypesAndDirections(), "cost");
    return finder.findSinglePath(start, end);
}

有关图算法示例,请参阅here

答案 1 :(得分:0)

请回答这个问题,了解我的所作所为。 Dijkstra algorithm with Neo spring boot