Probabilistic search - psearch.tar.gz
Rioshin an'Harthen
rharth75 at hotmail.com
Tue Apr 4 12:14:05 PDT 2006
"Sean Kelly" <sean at f4.ca> wrote in message
news:e0ud2e$1tvn$1 at digitaldaemon.com...
> John Demme wrote:
>> Andrew Fedoniouk wrote:
>>
>>> "Sean Kelly" <sean at f4.ca> wrote in message
>>> news:e0u9gl$1ppd$1 at digitaldaemon.com...
>>>> Oskar Linde wrote:
>>>>> I'm not sure if this is intended as a joke or not, but I am sorry to
>>>>> tell that your code is not logarithmic. It is easy to prove that there
>>>>> are no better algorithm than O(n) for searching an unordered array on
>>>>> a
>>>>> deterministic single thread.
>>>> Perhaps, but some algorithms have a better average case than others
>>>> assuming certain (typical) conditions. If there were simply no point,
>>>> why all the bother back in the 60s?
>>>>
>>>> By the way, as I just woke up, I haven't had a chance to look at the
>>>> algorithm yet.
>>>>
>>> Take your time, no rush, it is impossible anyway.
>>> To find something in unordered set requires N comparison operations at
>>> least. Always.
>>>
>>> As a morning tea reading I suggest to read US Patent 5,533,051 on
>>> compression of random data.
>>> It claims that it will compress two arbitrary bits into one bit.
>>>
>>> http://gailly.net/05533051.html
>>>
>>>
>>> Andrew Fedoniouk.
>>> http://terrainformatica.com
>>
>> Come now... I'm sure he's talking about the average case, not the worst
>> case.
>
> I don't think it matters. No matter the algorithm, you must examine every
> element of the search string. It's just that typical searches are
> actually worse than O(N), as they often examine each element more than
> once.
You have to examine every element of the search string? How come I haven't
heard that? :)
Try (approximately - my C(++) experience shows too much):
char *needleInHaystack(char *haystack, char needle)
{
if( !haystack )
return null;
for( char *loc = haystack; *loc != '\0'; loc++ )
if( *loc == needle )
return loc;
return null;
}
This definitely does not examine every element of the string, except in the
worst-case scenario - just enough to find the first occurence, no matter
what the string is or what character the needle is.
More information about the Digitalmars-d
mailing list