[Haskell-cafe] Fibonacci Heap without using Monad
larry.liuxinyu
liuxinyu95 at gmail.com
Fri Dec 31 02:31:07 CET 2010
Hi,
Sorry for there is a bug in my previous post.
The example consolidate function for number should be like this:
consolidate xs = foldl meld [] xs where
meld [] x = [x]
meld (x':xs) x | x == x' = meld xs (x+x')
| x < x' = x:x':xs
| otherwise = x': meld xs x
The bug happens in my previous mail like below.
--------before fixing--------
>consolidate [2, 1, 1, 32, 4, 8, 1, 1, 2, 4]
>[16,4,32,4]
--------after fixing----------
>consolidate [2, 1, 1, 32, 4, 8, 1, 1, 2, 4]
>[8, 16, 32]
Therefore, the consolidate function for unordered binomial trees should be
modified as the following respectively.
consolidate :: (Ord a) => [BiTree a] -> [BiTree a]
consolidate ts = foldl meld [] ts where
meld [] t = [t]
meld (t':ts) t | rank t == rank t' = meld ts (link t t')
| rank t < rank t' = t:t':ts
| otherwise = t' : meld ts t
I am sorry for this mistake.
The updated source code can be found from here:
https://sites.google.com/site/algoxy/otherheaps/otherheaps.zip
Happy new year.
--
Larry, LIU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20101230/bcd3f888/attachment.htm>
More information about the Haskell-Cafe
mailing list