On Mar 22, 1:11 am, [EMAIL PROTECTED] wrote:
> On Mar 21, 4:17 am, Bryan Olson <[EMAIL PROTECTED]> wrote:
>
>
>
> > Arnaud Delobelle wrote:
> > > Bryan Olson wrote:
> > [...]
> > >> Arnaud Delobelle offered a good Wikipedia link, and for more background
> > >> look up "amortized analysis.
>
> > > Hrvoje Niksic provided the link :).
>
> > Oops, careless thread-following. Hrvoje Niksic it was.
>
> > > I still think two unrelated
> > > things are being compared in this thread when people say that method A
> > > (using dictionaries / sets) is O(n) and method B (sorting the list)
> > > O(nlogn).
>
> > > Isn't it the case that:
>
> > >          | Worst case | Average case
> > > ---------|------------|-------------
> > > Method A | O(n^2)     | O(n)
> > > Method B | O(nlogn)   | O(nlogn)
>
> > > Which method is the best would then be determined by the distribution
> > > of the hash values of your data, and whether you want to have a
> > > guarantee the method will have a less-than-quadratic behaviour.
>
> > If we exclude the case where an adversary is choosing the keys, the
> > chance of a seriously degenerate case in the hashing method is so
> > remote that we do should not worry about it. Those who insist on
> > ranking by worst-case behavior have probably abandoned Python long
> > ago, as it uses those hashed 'dict' things everywhere. Of course
> > they've also abandoned OS's with demand-paged virtual memory and
> > such.
>
> > --
> > --Bryan
>
> A collision sequence is not so rare.
>
> >>> [ hash( 2**i ) for i in range( 0, 256, 32 ) ]
>
> [1, 1, 1, 1, 1, 1, 1, 1]

Bryan did qualify his remarks: "If we exclude the case where an
adversary is choosing the keys, ..."

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to