Search in sources :

Example 41 with WeightedPath

use of org.neo4j.graphalgo.WeightedPath in project graphdb by neo4j-attic.

the class StopAfterWeightIterator method fetchNextOrNull.

@Override
protected WeightedPath fetchNextOrNull() {
    if (!paths.hasNext()) {
        return null;
    }
    WeightedPath path = new WeightedPathImpl(costEvaluator, paths.next());
    if (foundWeight != null && path.weight() > foundWeight) {
        return null;
    }
    foundWeight = path.weight();
    return path;
}
Also used : WeightedPath(org.neo4j.graphalgo.WeightedPath)

Example 42 with WeightedPath

use of org.neo4j.graphalgo.WeightedPath in project graphdb by neo4j-attic.

the class PathFindingExamplesTest method astarExample.

@Test
public void astarExample() {
    // START SNIPPET: astarUsage
    Node nodeA = createNode("name", "A", "x", 0d, "y", 0d);
    Node nodeB = createNode("name", "B", "x", 7d, "y", 0d);
    Node nodeC = createNode("name", "C", "x", 2d, "y", 1d);
    Relationship relAB = createRelationship(nodeA, nodeC, "length", 2d);
    Relationship relBC = createRelationship(nodeC, nodeB, "length", 3d);
    Relationship relAC = createRelationship(nodeA, nodeB, "length", 10d);
    EstimateEvaluator<Double> estimateEvaluator = new EstimateEvaluator<Double>() {

        public Double getCost(final Node node, final Node goal) {
            double dx = (Double) node.getProperty("x") - (Double) goal.getProperty("x");
            double dy = (Double) node.getProperty("y") - (Double) goal.getProperty("y");
            double result = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
            return result;
        }
    };
    PathFinder<WeightedPath> astar = GraphAlgoFactory.aStar(Traversal.expanderForAllTypes(), CommonEvaluators.doubleCostEvaluator("length"), estimateEvaluator);
    WeightedPath path = astar.findSinglePath(nodeA, nodeB);
    // END SNIPPET: astarUsage
    System.out.println(path.weight());
}
Also used : WeightedPath(org.neo4j.graphalgo.WeightedPath) Node(org.neo4j.graphdb.Node) Relationship(org.neo4j.graphdb.Relationship) EstimateEvaluator(org.neo4j.graphalgo.EstimateEvaluator) Test(org.junit.Test)

Example 43 with WeightedPath

use of org.neo4j.graphalgo.WeightedPath in project graphdb by neo4j-attic.

the class ExperimentalAStar method findAllPaths.

public Iterable<WeightedPath> findAllPaths(Node start, final Node end) {
    Predicate<Path> filter = new Predicate<Path>() {

        public boolean accept(Path position) {
            return position.endNode().equals(end);
        }
    };
    final Traverser traverser = traversalDescription.order(new SelectorFactory(end)).filter(filter).traverse(start);
    return new Iterable<WeightedPath>() {

        public Iterator<WeightedPath> iterator() {
            return new StopAfterWeightIterator(traverser.iterator(), costEvaluator);
        }
    };
}
Also used : Path(org.neo4j.graphdb.Path) WeightedPath(org.neo4j.graphalgo.WeightedPath) WeightedPath(org.neo4j.graphalgo.WeightedPath) BestFirstSelectorFactory(org.neo4j.graphalgo.impl.util.BestFirstSelectorFactory) Traverser(org.neo4j.graphdb.traversal.Traverser) StopAfterWeightIterator(org.neo4j.graphalgo.impl.util.StopAfterWeightIterator) Predicate(org.neo4j.helpers.Predicate)

Aggregations

WeightedPath (org.neo4j.graphalgo.WeightedPath)43 Node (org.neo4j.graphdb.Node)33 Test (org.junit.Test)30 Path (org.neo4j.graphdb.Path)14 Relationship (org.neo4j.graphdb.Relationship)14 Dijkstra (org.neo4j.graphalgo.impl.path.Dijkstra)7 PathFinder (org.neo4j.graphalgo.PathFinder)6 BestFirstSelectorFactory (org.neo4j.graphalgo.impl.util.BestFirstSelectorFactory)5 GraphDatabaseService (org.neo4j.graphdb.GraphDatabaseService)5 PathExpander (org.neo4j.graphdb.PathExpander)5 StopAfterWeightIterator (org.neo4j.graphalgo.impl.util.StopAfterWeightIterator)4 Traverser (org.neo4j.graphdb.traversal.Traverser)4 Predicate (org.neo4j.helpers.Predicate)4 HashSet (java.util.HashSet)3 LinkedList (java.util.LinkedList)3 WeightedPathImpl (org.neo4j.graphalgo.impl.util.WeightedPathImpl)3 Ignore (org.junit.Ignore)2 EstimateEvaluator (org.neo4j.graphalgo.EstimateEvaluator)2 Transaction (org.neo4j.graphdb.Transaction)2 HashMap (java.util.HashMap)1