Complexity nomenclature
ZombineDev via Digitalmars-d
digitalmars-d at puremagic.com
Fri Dec 4 01:09:35 PST 2015
On Friday, 4 December 2015 at 07:50:19 UTC, Minas Mina wrote:
> On Friday, 4 December 2015 at 03:46:39 UTC, Walter Bright wrote:
>> On 12/3/2015 5:27 PM, Andrei Alexandrescu wrote:
>>> Now this primitive may have three complexities:
>>>
>>> * linear in the length of r (e.g. c is a singly-linked list)
>>>
>>> * linear in the number of elements after r in the collection
>>> (e.g. c is an array)
>>>
>>> * constant (c is a doubly-linked list)
>>>
>>> These complexities must be reflected in the name of the
>>> primitives. Or perhaps
>>> it's okay to conflate a couple of them. I know names are
>>> something we're awfully
>>> good at discussing :o). Destroy!
>>
>> Are you sure there are only 3 complexities? What if it's a
>> self-balancing tree?
>>
>> I'm also not sure it is a good idea to put the complexity in
>> the name of the primitive. Do any other algorithm libraries do
>> that?
>
> I agree -- putting the complexity (eh, running time) to the
> primitive's name seems like a bad idea.
>
> I believe that stability is a more important "feature" of a
> sorting algorithm than its running time, because you can make
> implications about it and use them for your own algorithms (I
> use it for implementing delta compression) and affects the
> output.
>
> Running time is still a good guarantee to have, but if `sort`
> runs O(n^2) or O(nlogn) is not going to affect how your output
> will look like!
That's wrong. Imagine a sort method that calls to an API server
to sort the numbers. Given a good internet connection, this
implementation detail will not affect the correctness of the
result. But I'm sure that no sane person would want to use this
method. When the only job of a function is to implement an
algorithm then the only thing you should care about is the time
and space complexity (the correctness is given). Otherwise,
designing large systems becomes impossible, because all large
systems have hard performance requirements.
More information about the Digitalmars-d
mailing list