有多个时间间隔,从startTime到endTime。每个间隔由重复的开始时间,结束时间(直到重复要继续的点),onDuration(当它处于活动状态并且可以重叠时)以及offDuration定义。查找是否有规律的经常性时间间隔重叠的算法?
采样间隔:
startTime: 3 secs
endTime: 30 secs
onDuration: 3 secs (represented by x)
offDuration: 5 secs (represented by -)
|--[xxx]-----[xxx]-----[xxx]-----[xxx]-|
重叠的间隔:两个重复系列被说成重叠,如果他们有重叠接通时间(x)的它们各自的开始和结束时间的范围内。
问题:有几十个这样的间隔。提供了一个新的重复间隔,由相同的参数(startTime,endTime,onDuration,offDuration)定义。在startTime和endTime的时间范围内,这个新的重复间隔是否与任何现有时间间隔重叠?
PotentialInterval:因为它结束它会重叠之前
startTime: 6 secs
endTime: 15 secs
onDuration: 3 secs
offDuration: 6 secs
PotentialInterval不SampleInterval冲突。
注意:
这是非常相似的this question,但我不能完全理解解决方案的正确性。此外,我感兴趣的只是确定它们是否冲突(布尔真或假),而不是实际冲突的时间间隔。
每个区间的结束时间和开始时间形成算术级数。 startTime n = startTime +(n-1)(onDuration + offDuration)其中startTime n < endTime。因此,也许this question可能指向正确的方向,但我无法找到一种方法来合并持续时间。
样品要小得多。实际上,每次重复中的个体间隔的数量将是几千(例如从现在开始直到下一个10年,每天从下午3点到下午4点)。此外,重复次数可能是数百次。因此,对数据进行非规格化(列出每个事件的列表)可能并不实际。
该数据存储在NoSQL数据库中,因此数据库中的日期 - 时间操作是不可能的。这需要在内存中完成,最好大约500毫秒
气味像功课... – dat3450
什么是你的问题? –
@ dat3450:这不是家庭作业,这是我目前正在调度资源的问题。虽然我希望我已经完成了这样的作业,所以我现在不会被卡住:) – user1271286