random cover of a range
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri Feb 13 21:20:26 PST 2009
Bill Baxter wrote:
> On Sat, Feb 14, 2009 at 1:03 PM, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org <mailto:SeeWebsiteForEmail at erdani.org>>
> wrote:
>
> bearophile wrote:
>
> Andrei Alexandrescu:
>
> Say at some point there are k available (not taken) slots out of
> "n". There is a k/n chance that a random selection finds an
> unoccupied slot. The average number of random trials needed
> to find
> an unoccupied slot is proportional to 1/(k/n) = n/k. So the
> total
> number of random trials to span the entire array is quadratic.
> Multiplying that by 0.9 leaves it quadratic.
>
>
> It's like in hashing: if you want to fill 99% of the available space
> in a hash, then you take ages to find empty slots. But if you
> fill it
> only at 75-90%, then on average you need only one or two tries to
> find an empty slot. So your time is linear, with a small
> multiplicative constant. When the slots start to get mostly
> full, you
> change algorithm, copying the empty slots elsewhere.
>
>
> Well I don't buy it. If you make a point, you need to be more
> precise than such hand-waving. It's not like in hashing. It's like
> in the algorithm we discuss. If you make a clear point that your
> performance is better than O(n*n) by stopping at 90% then make it. I
> didn't go through much formalism, but my napkin says you're firmly
> in quadratic territory.
>
>
> Well he has a point that the number of trials required to find an empty
> depends not on the absolute number of empty items, but only the ratio of
> empties to fulls. Even your own claim about average number of trials
> was n/k -- not sure how you got that though.
If you toss a N-side dice hoping for a specific face to show up (and
stopping afterwards), how many times do you have to toss it on average?
I recall (without being sure) that you need to toss it a number of times
proportional to N. Could anyone confirm or deny?
Now, assuming the above is true, say we decide to do the linear search
for a fraction f of the n elements in the array. The average number of
steps will be:
S = n * (1/n + 1/(n - 1) + 1/(n - 2) + ... + 1/(n - fn))
So we're looking for the harmonic series that does not start from 1, but
instead starts from its fn'th term (you drop the first (1-f)n terms).
Does it converge? (I don't know.)
Andrei
More information about the Digitalmars-d
mailing list