用于DVR录制计划的数据模型

时间:2011-11-10 14:27:12

标签: algorithm data-structures collections

DVR需要存储要记录的节目列表。每个节目都有一个开始时间和持续时间。需要以允许系统快速确定新记录请求是否与现有预定记录冲突的方式存储该数据。

问题在于仅仅查看是否存在具有冲突开始时间的节目是不充分的,因为较长节目的结束可以与较短节目重叠。我想可以创建一个跟踪每个时间片可用性的数据结构,可能是半小时的粒度,但是如果我们不能假设所有节目在半小时边界开始和结束,并且在分钟级别跟踪,那么这将失败在存储和查找方面似乎效率低下。

是否存在允许按范围查询的数据结构,您提供下限和上限,并返回属于该范围或与该范围重叠的所有元素的集合?

1 个答案:

答案 0 :(得分:2)

interval tree(可能使用augmented tree数据结构?)完全符合您的要求。您将所有预定录制内容输入到树中,当有新请求进入时,请检查它是否与任何现有间隔重叠。此查找和添加新请求都需要O(log(n))时间,其中n是当前存储的间隔数。