Tom Kaitchuck wrote:

OK, so I've finally gotten around to looking at the NGrouting source, and I have a few questions. Which are hopefully simple to answer.

First in node/rt/StandardNodeEstimator.java on line 162 ish there is:
                if (pDNF==0)
                        pDNF = pLegitDNF;
Shouldn't this be:
                if (pDNF<pLegitDNF)
                        pDNF = pLegitDNF;
That would seem to make more since, unless 0 indicates something else.

Not sure what this code is trying to achieve, but it looks like it is just attempting to have a more intelligent value for pDNF in the event that the estimator doesn't have any data yet, in which case I think you are right. Matthew?


Second a few lines later there is something like:
double tDNF = etDNF.guessTime(k) * htl;
double pNotConnectFailedOrSearchFailed =
(1 - pConnectFailed) * (1- pSearchFailed);
estimate += pNotConnectFailedOrSearchFailed
* (pDNF - pLegitDNF) * (tDNF + requestFailTime);
Now, if I read this correctly, (I'm assuming that this code is used to obtain the next node to route to for each node in the chain.) We find the probability of a legit DNF and then multiply that by the estimated time to re-request that. (tDNF + requestFailTime). However tDNF is multiplied by HTL, (Which I assume to be the current HTL). The problem with this is that, if we are not the originating node, we are not going to re-request it if it fails. So instead it will be re-requested from the original node. So shouldn't we be trying to estimate how long that would take? IE: double tDNF = etDNF.guessTime(k) * MAXhtl;

Its a toughie, but I don't think so. The whole "cost of a DNF is the time to re-request" was always stretching reality a bit anyway, and this is highlighted by the fact that, yes, if you aren't the originator you won't be the one re-requesting, but even if you are the originator, you won't necessarily re-request the data.


The re-request idea is really just a non-arbitrary way to deal with DNFs within the context of an overall estimate of how long it takes to get data, but it shouldn't be taken *too* seriously.

Given this, I think the existing code is probably ok.

Ian.


_______________________________________________ Devl mailing list [EMAIL PROTECTED] http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to