我正在以[0,m]的间隔处理一组n个整数,我需要执行以下操作:
目前我正在使用二叉树/堆,但想知道是否有更高效的数据结构。 我可以使用未初始化的RAM,据我所知,需要O(1)进行查找/删除/插入,O(n)进行枚举/清除,同时需要O(m)空间。 (例如,见https://research.swtch.com/sparse)
是否有任何需要少于O(m)空间的数据结构,同时仍然保持(摊销)最坏情况复杂度O(1)用于查找/删除/插入和O(n)用于枚举/清除?
请注意:按以下方式摊销:"给定n次操作,我们总共有* n次操作,因此最坏情况下的摊销是O(1)"。不如:"给定这种概率分布并给出假设X,Y,Z,平均最坏情况很可能在O(1)中。" 所以我不是在寻找可以在O(1)&#34中使用的基于散列表的解决方案;可能大部分时间都是#34;
答案 0 :(得分:0)
不,没有这样的已知数据结构。请参阅Mikkel Thorup撰写的“MihaiPǎtraşcu:ob告和开放问题”,第1部分,问题1.“如果我们想要查找和更新的联合绑定,最着名的边界是O(sqrt(log n / log log n)) “