|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-04-13 12:16:00
Douglas Gregor <doug.gregor_at_[hidden]> writes:
> On Apr 12, 2006, at 5:10 PM, David Abrahams wrote:
>
>> Douglas Gregor <doug.gregor_at_[hidden]> writes:
>>
>>> This would change the complexity of Dijkstra's algorithm from O(|V|
>>> lg |V|) to O(|V| lg |E|), where |V| is the number of vertices in the
>>> graph and |E| is the number of edges in the graph.
>>
>> Hmm, did you see:
>> http://lists.boost.org/Archives/boost/2002/01/23970.php
>> and the foregoing thread?
>
> I've read it now. So I'll be more careful with the complexity measures:
>
> With a relaxed heap it's O(|V| lg |V| + |E|)
> With a binary heap it's O((|V| + |E|) lg |V|)
>
> If you insert instead of updating, that, lg |V| becomes a lg |E|.
>
> The relaxed heap is admittedly complicated.
More importantly to me, it makes usage requirements much more
complicated in some cases.
> We have some performance test's we've run, and it's a toss-up. On
> some graphs, the binary heap does slightly better; on others, the
> relaxed heap does slightly better.
Well, that's great to know.
So, I'll ask my original question again: given that it's a toss-up,
and it is often inconvenient for users, does it make sense to require
a relaxed heap?
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk