3

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

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

回答评论中提出的问题:这是我所说的圆形子范围的图像(感谢 G. Bach 和维基百科):在此处输入图像描述

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

希望

谢谢!

4

1 回答 1

1

听起来与圆弧图背后的想法有关(但不是图本身,因为您从间隔开始,而不关心它们的圆弧图表示)。

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

现在您可以用 表示您的(s,e)区间s > e。将其拆分为两个区间(s, max),并将(min, e)它们放入区间树中,并为它们提供原始区间的引用(start, end)。如果你从n可能与一个周期重叠的区间开始,你会2n在树中得到区间,并且渐近界成立。

于 2015-11-20T10:41:54.513 回答