<div dir="ltr"><div>Hey Peter,</div><div><br></div><div>I have an application where I have to calculate the road distance between a</div><div>number of points, let's say a thousand. Right now I'm doing 1000*1000 point</div>
<div>to point queries (with CH) to calculate that distance matrix. This takes about</div><div>30 minutes, even though I recently found out that you can accelerate this</div><div>by setting "instruction" and "calcPoints" to false, so maybe it only takes </div>
<div>15 minutes now. </div><div><br></div><div>Anyways, in <a href="http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf">http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf</a></div><div>
section 4.1 is described how you can implement a many to many routing by doing</div><div>1000 forward searches and 1000 backward searches but omitting the abort criterion.</div><div>Most of the code to do that is already there you just have to get rid of the abort</div>
<div>criterion in "dijkstrabiCH":</div><div>  return currFrom.weight >= bestPath.getWeight() && currTo.weight >= bestPath.getWeight();</div><div>and make bestWeightMapFrom and bestWeightMapTo in DijkstraBidirectionRef accessible. </div>
<div><br></div><div>Unfortunately, "dijkstrabiCH" is an anonymous class inside of </div><div>PrepareContractionHierarchies.createAlgo(). So for my preliminary tests I just</div><div>ripped lots of code out of PrepareContractionHierarchies and DijkstraBidirectionRef.</div>
<div>That's obviously not a good long-term solution. I guess for a better solution one </div><div>would have to do some major refactorings. </div><div><br></div><div>So, that's my motivation. Any comments? :)</div>
<div><br></div><div>Best regards,</div><div>Lars </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 19, 2014 at 8:15 AM, Peter K <span dir="ltr"><<a href="mailto:peathal@yahoo.de" target="_blank">peathal@yahoo.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey Lars,<br>
<br>
the reason is simple: no one (except our own classes) should use those<br>
methods, so that we can break this API at any time we want. Which<br>
methods you need and why?<br>
<br>
Regards,<br>
Peter.<br>
<div><div class="h5"><br>
> Hey there,<br>
><br>
> is there a reason why there are methods and fields in<br>
> AbstractBidirAlgo that have default visibility (package private)?<br>
> Now you can't inherit from AbstractBidirAlgo if the inheriting class<br>
> resides in different package than  com.graphhopper.routing.<br>
><br>
> Best regards,<br>
> Lars<br>
><br>
<br>
<br>
</div></div>_______________________________________________<br>
GraphHopper mailing list<br>
<a href="mailto:GraphHopper@openstreetmap.org">GraphHopper@openstreetmap.org</a><br>
<a href="https://lists.openstreetmap.org/listinfo/graphhopper" target="_blank">https://lists.openstreetmap.org/listinfo/graphhopper</a><br>
</blockquote></div><br></div>