在OCW Advanced Data Structures course中,E。Demaine教授提到了一个数据结构,它能够找到查询点占主导地位的所有点(b 2 ,b 3 )使用O(n)空间和O(k)时间,前提是已经完成了对点b 3 的搜索,其中k是输出的大小。
该解决方案的工作原理是将上述问题转化为光线刺伤问题,并使用类似于分数级联的技术,如下面的image from the lecture notes所示:
虽然概念本身很直观,但实现实际的数据结构并不简单。
Chazelle在一篇论文中将其描述为Filtering Search (pp712)。
我想找到其他文献或答案来描述和解释这种数据结构和算法(可能使用伪代码和更多图像,重点关注实现)。
此外,我还想了解更多有关此结构是否可以以非静态方式实现的信息。也就是说,我希望能够尽可能有效地插入和删除结构中的点。
答案 0 :(得分:3)
本书"Computational Geometry: Algorithms and Applications"涵盖了这些问题的数据结构。每一章都有一个很好的部分,描述了在哪里学习更多,包括更复杂的结构,以回答本书未涉及的相同问题。有足够的图表,但伪代码不多。
这样的许多结构可以使用书中讨论的技术进行动态化#34;动态数据结构的设计"。 Jeff Erickson has some nice notes on the topic.使用分数级联与Cache-Oblivious Streaming B-trees"进行讨论 - 请参阅有关"缓存无关前瞻数组的部分。