2016-10-07 38 views
0

我的Java项目是使用Max Fibonacci堆来查找最热门的第n个最流行的主题标签。 记录可以是这样的:是FibonacciHeap最小堆?如何使用FibonacciHeap查找最大值?

#saturday 5 
#sunday 3 
#saturday 10 
#monday 2 
#reading 4 
#playing_games 2 
3 

但斐波那契堆只能找到分钟的功能。 'Fibonacci heap','Min Fibonacci heap'和'Max Fibonacci heap'之间的区别是什么?

我的想法是使用函数extractmax()n次来获得顶部n。但我不知道Max Fibonacci堆是什么。

回答

2

在最小和最大堆之间切换很简单,只需更改比较器即可。堆是一堆,无论它在哪个方向工作,算法都不会改变。

查找最大元素只是找到最小的元素,除了您更改排序。

+0

对不起。我不明白你的意思。斐波那契堆可以使用findmin()。因为min是根。有没有一个斐波那契堆在根中存储最大值? – user92322

+0

当然。这正是您在Fibonacci堆代码中更改“<' to '>”时得到的结果,反之亦然。 –

0

不是在结构中使用最小堆,而是使用最大堆。