Hi Michael,
thanks for your answer.
I tried to use WeightedPath path = dijkstraPath.findAllPaths(startNode, 
endNode);
But always one path is returned, except when there are two or more paths 
with the same cost.
Instead i would like to found the firts 3 alternative path, with different 
cost.

Antonio Grimaldi


Il giorno venerdì 21 marzo 2014 17:26:21 UTC+1, Antonio Grimaldi ha scritto:
>
> Hi,
> I used the Dijkstra algorithm to compute the path between two nodes in the 
> graph, in this way :
>
>
> CostEvaluator<Double> costEvaluator = null;
> if(costProperty.equalsIgnoreCase(IConstants.EDGE_LENGTH_PROPERTY)){
>   //In questo caso bisogna eseguire il calcolo del percorso più breve 
> (minore distanza percorsa)
>   costEvaluator = CommonEvaluators.doubleCostEvaluator( costProperty );
> }else if(costProperty.equalsIgnoreCase(IConstants.EDGE_SPEED_PROPERTY)){
>   //In questo caso bisogna eseguire il calcolo del percorso più rapido 
> (minore rapporto distanza/velocità)
>   costEvaluator = new CostEvaluator<Double>() {
>   @Override
>   public Double getCost(Relationship relationship, Direction direction) {
>        Double edgeLength = (Double) 
> relationship.getProperty(IConstants.EDGE_LENGTH_PROPERTY);
>        Long edgeSpeed = (Long) 
> relationship.getProperty(IConstants.EDGE_SPEED_PROPERTY);
>        Double cost = edgeLength / edgeSpeed; 
>        return cost.doubleValue();
>     }
>
> };
>
>   }
> PathFinder<WeightedPath> dijkstraPath = 
> GraphAlgoFactory.dijkstra(PathExpanders.forTypeAndDirection(relationType, 
> Direction.OUTGOING), costEvaluator);
> WeightedPath path = dijkstraPath.findSinglePath(startNode, endNode);
>
> So, I can calculate the shortest route or the quickest route by 
> costProperty's 
> value...
>
> Now, I need to make the same considerations, whit shortestPath algoritm, 
> because I would to retrieve the first N = 3 paths found.
>
> I tried using : 
> PathFinder<Path> simplePaths = 
> GraphAlgoFactory.shortestPath(PathExpanders.forTypeAndDirection(relationType, 
> Direction.OUTGOING), 1000000, 3);
> Iterable<Path> paths = simplePaths.findAllPaths(startNode, endNode);
>
> but this not manage my "costProperty".
>
> Is there a way to retrieve the first N = 3 paths found, whit an algoritm 
> that manage  "costProperty", like Dijkstra?
>
> Thanks
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to