[GraphHopper] Question on PrepareContractionHierarchies

Peter K peathal at yahoo.de
Wed Oct 2 17:50:51 UTC 2013


There is indeed no need for the super call - fixed.
Also the preparation now seems to be >5% faster(for germany)! cool &
thanks :) !

Regards,
Peter.

> Hi Peter,
>
> yes, this is related to the principle of CH, which I understand.
> I was focusing on the conditions actually tested by the class
> LevelEdgeFilterCH .
>
> I do not understand the inheritance to LevelEdgeFilter and the call to
> the super the the accept method,
> but since it is very deep into the code, I wanted to know if there is
> something I do not understand wrt the invariants of the
> PrepareContraction algorithm: eg: can the level of a node be negative?
>
> Here is the accept method of LevelEdgeFilterCH.
> I've put some comments with //// to point the lines related to my
> question.
>
>         public final boolean accept( EdgeIterator iter )
>         {
>             if (!super.accept(iter))  ////here we check the accept
> condition of LevelEdgeFilter
>             {
>                 return false;
>             }
>             ////at this point, we can go up or equal in the hierarchy,
> not strictly down
>             // ignore if it is skipNode or a endNode already contracted
>             int node = iter.getAdjNode();
>             ////in the test below, we ensure that we will stay at
> level zero in the hierarchy,
>             ////meaning that we can only go to non-contracted nodes,
> so what's the point of the call to super here above?
>             return avoidNode != node && graph.getLevel(node) == 0;
>         }
>
>
> regards
> --
> Renaud
>
>
> Le 2/10/2013 13:23, Peter K a écrit :
>> Hi Renaud,
>>
>> the LevelEdgeFilterCH (additionally to the hierarchy filtering) just
>> makes sure that the specified node is excluded from the dijkstra. If
>> the dijkstra finds a shorter path (without that node) we do not need
>> the shortcut. E.g.:
>>    |  |
>> ..-A--B--C
>>    |     |
>>    \-D-E-/
>> To contract B we introduce several shortcuts. One of them is the
>> shortcut from A to C. But we can avoid that if we find a shorter way
>> from A to C without B.
>>
>> Regards,
>> Peter.
>>
>>> Dear Peter,
>>>
>>> I have a question on the PrepareContractionHierarchies algo.
>>>
>>> There is a class LevelEdgeFilterCH, which is used in the Dijkstra to
>>> check if the shortest path between two non-contracted nodes pass
>>> through a node that we want to contract.
>>>
>>> My point is that this class inherits from LevelEdgeFilter, and uses
>>> its check,
>>> and I do not understand why; I fear that there is something I do not
>>> understand.
>>>
>>> LevelEdgeFilter prevents us from strictly going down in the hierarchy.
>>> and LevelEdgeFilterCH check this condition first.
>>> If it is OK, it further check that the neighbour node is not
>>> contracted, that is: of level zero.
>>> Knowing that the source node is also non-contracted, this second
>>> check seems stronger than the first check inherited from the
>>> LevelEdgeFilter class.
>>>
>>> Thank you for your help.
>>>
>>> -- 
>>> *Renaud De Landtsheer, Ir, Phd*
>>> Sr R&D Engineer
>>> CETIC
>>> Rue des Frères Wright, 29/3
>>> B-6041 Charleroi
>>> Phone: +32 71 490 754
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> GraphHopper mailing list
>>> GraphHopper at openstreetmap.org
>>> https://lists.openstreetmap.org/listinfo/graphhopper
>>
>>
>>
>> _______________________________________________
>> GraphHopper mailing list
>> GraphHopper at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/graphhopper
>
>
> -- 
> *Renaud De Landtsheer, Ir, Phd*
> Sr R&D Engineer
> CETIC
> Rue des Frères Wright, 29/3
> B-6041 Charleroi
> Phone: +32 71 490 754
>
>
>
>
> _______________________________________________
> GraphHopper mailing list
> GraphHopper at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/graphhopper

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/graphhopper/attachments/20131002/143defd3/attachment.html>


More information about the GraphHopper mailing list