【发布时间】:2011-06-24 01:49:32
【问题描述】:
I 两组区间对应于相同的一维(线性)空间。这是一个粗略的视觉效果——实际上,间隔要多得多,而且分布得更广,但这给出了基本概念。
这些区间中的每一个都包含信息,我正在编写一个程序来将一组区间(红色)中的信息与另一组区间(蓝色)中包含的信息进行比较。
这是我的问题。我想将空间划分为 n 个块,以便在每个块中完成大致相等数量的比较工作(工作量取决于该部分的间隔数空间)。此外,分区不应将任何红色或蓝色间隔分成两个块。
所以输入是两组区间,而期望的输出是空间的一个分区,使得
- 间隔(大致)均匀分布在分区的每个元素中
- 没有区间与多个分区元素重叠
谁能建议一种方法或算法来做到这一点?
【问题讨论】:
-
@Daniel:您在开始比较之前扫描整个空间一次以建立比较列表是否昂贵?另外,你保证有相同数量的红色和蓝色间隔吗?有没有办法通过检查来识别间隔的序列(例如,在标头中编码的序列号或其他东西)?
-
间隔数可能不相等。可能需要对线性空间进行快速初始扫描,而且成本不会很高。如有必要,我可以将指向“间隔”对象(具有开始和结束坐标的对象)的指针存储在多个数据结构中,尽管存储更多内容会占用大量内存。首先想到的是区间树和动态数组,但我正在尝试弄清楚如何使用它们......
-
@Daniel - 我是否遗漏了什么,或者您不能通过快速扫描创建一个指针对列表,然后对该列表进行分区以进行处理?
-
不一定有 any 解决方案,因为您只能在未被红色或蓝色间隔覆盖的点处将空间“剪断”成段.例如。如果间隔像两排砖砌的砖一样排列,就不会有这样的点。 (你也没有说间隔是否保证在它们各自的集合中不重叠,但我的反例即使没有重叠也是如此。)
-
不清楚什么取决于块的工作量 - 你说比较的数量,这取决于间隔。但是哪些间隔,来自第 1 组或来自第 2 组,或来自两者?如果它只取决于其中一个,那么间隔的分布将会很有趣。
标签: algorithm intervals space-partitioning