连续交叉两组间隔

时间:2016-11-17 08:21:12

标签: algorithm

我们有两组间隔,A和B.

A中的每个inteval都由两个正实数{A1start,A1end},{A2start,A2end},...,{Anstart,Anend}描述。 Anend同样是> Anstart。 A中的间隔重叠。

集合B仅由两个值描述:间隔长度和间隔距离。间隔长度是每个间隔的增量,即Bnend - Bnstart,并且> 0.间隔距离是任意两个Bnstart之间的距离。 B中的间隔可能不重叠。

我们知道在任何时间间隔{A1start,Anend},A和B中的间隔数应该相等。

问题是:在{A1start,Anend}的时间间隔内,我们可以将B与A 连续交叉吗?即B1必须与A1相交,B2必须与A2相交等。如果任何B与其指定的A相交,则其他任意A都可以。

我制定了两个算法规则并且目前卡住了:

  1. B规则允许我们计算任何{A1start,Anend}的最小和最大间隔数,当A和B中的间隔数不相等时,我们用它来丢弃这些情况。
  2. 如果A中的任何间隙大于B距离,我们会抛弃这种情况,因为至少有一个B不会与任何A相交。
  3. 这两个集合连续相交还有哪些其他条件?

1 个答案:

答案 0 :(得分:1)

你可以这样解决:

  • 通过从所有Anstart值中减去长度,将A中的所有间隔扩展B的间隔长度。您可以将A视为现在定义B中的间隔可以开始的所有有效位置。
  • 现在的问题是你是否可以用一组间隔(A)交叉一系列间隔给定距离的点(B)。您可以通过将A1A2相交-distanceA3偏移-2distance ... An偏移{{1}来解决此问题。 }}。如果所有这些间隔的交集都是非空的,则A和B的交点是可能的。