"圆形"区间树算法

时间:2015-11-20 08:32:47

标签: javascript algorithm interval-tree

我想知道是否有人已经实现/知道将处理循环间隔的(最好是javascript)区间树算法。通过循环,我的意思是具有开始的间隔>结束。请注意,这也需要限制间隔的大小。

这只是常见区间树问题的一个子句吗?

回应评论中提出的问题: 这是一个图像(感谢G. Bach和维基百科),我的意思是圆形子范围:enter image description here

和(与上图无关)这里是范围的json表示示例: [{id:' range1',start:3,end:34},{id:' range2circular',start:30,end:6}]

希望

谢谢!

1 个答案:

答案 0 :(得分:1)

circular arc graphs背后的想法相关的声音(但不是图表本身,因为你从间隔开始并且不关心它们的圆弧图表示。)

假设它是什么,这意味着域可以用类似于圆的度数的周期来表示。然后,您有一个最小可能值min和最大可能值max = min + 1*period,您要做的第一件事是找到最小s,使整数start = min + s + k*period k (基本上,这是一个模运算),同样你找到最小的eend = min + e + j*period

现在,您可以使用(s,e)将时间间隔表示为s > e。将其分为两个时间间隔(s, max)(min, e),将它们放入间隔树中,并为它们提供原始间隔(start, end)的引用。如果您以可能与某个时段重叠的n个时间间隔开始,则最终会在树中以2n个时间间隔结束,并且渐近边界将保持不变。