在算法中使用Find-Union数据结构

时间:2016-01-11 19:35:48

标签: algorithm data-structures union-find

我试图解决以下算法问题:

让我们说我们有一个数据结构,允许我们插入元素并删除和写入最小元素。并且假设我们知道一系列n命令,所有这些命令都是I(k)(插入k)或D(删除最小值并输出它)。

我们的任务是为每个D命令决定它将返回哪个号码。例如,对于序列:

I(2) D I(5) I(4) I(3) D D I(1) D D

结果应该是

2 3 4 1 5

目标(或提示)是使用Find-Union数据结构实现优于O(nlog(n))复杂度,这允许我们在{{1}中执行n生成集,查找和联合其中O(na(n))是逆Ackermann函数。

这不是家庭作业 - 我准备参加考试,并且已经有超过两个小时的练习困难了。

我将不胜感激任何进一步的提示

编辑:我忘记添加一个重要的假设。我们插入的所有数字都来自范围1..n

进一步修改:事实证明,我不是第一个遇到这个问题的人;它被称为离线最小问题,任何有兴趣的人都可以进一步阅读here

0 个答案:

没有答案