【问题标题】:Consecutively intersect two sets of intervals连续相交两组区间
【发布时间】:2016-11-17 08:21:11
【问题描述】:

我们有两组区间,A 和 B。

A 中的每个区间都由两个正实数 {A1start,A1end},{A2start,A2end},...,{Anstart,Anend} 描述。 Anend 总是 > Anstart。 A 中的间隔可能会重叠。

集合B只用两个值来描述:区间长度和区间距离。区间长度是每个区间的delta,即Bnend - Bnstart,并且>0。区间距离是任意两个Bnstart之间的距离。 B 中的区间不能重叠。

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

问题是:在{A1start,Anend} 的区间上,我们可以与A 相交吗?即B1 必须与A1 相交,B2 必须与A2 相交等。如果任何 B 与指定的 A 之外的任何其他 A 相交,则可以。

我已经制定了两个算法规则,目前卡住了:

  1. B 规则允许我们计算任何{A1start,Anend} 上的最小和最大间隔数,我们使用它来丢弃 A 和 B 中的间隔数不相等的情况。
  2. 如果 A 中的任何间隙大于 B 距离,我们会丢弃这种情况,因为至少有一个 B 不会与任何 A 相交。

这两个集合要连续相交还必须满足哪些其他条件?

【问题讨论】:

  • 注意这里没有直接的问题。你到底想要什么帮助?无论如何,它可能会偏离主题(太宽泛)。
  • @HenkHolterman,添加了问题。

标签: algorithm


【解决方案1】:

你可以这样解决:

  • 通过从所有Anstart 值中减去长度来将A 中的所有间隔扩大B 的间隔长度。您可以认为 A 现在定义了 B 中的区间可以开始的所有有效位置。
  • 现在的问题是您是否可以用一组间隔 (A) 相交一系列相隔给定距离的点 (B)。您可以通过将A1 与A2 偏移-distance 相交来解决此问题,A3 偏移-2distance ... An 偏移-(n-1)distance。如果所有这些区间的交集都不为空,则 A 和 B 的交集是可能的。

【讨论】:

  • 附加条件是每个 B 都有 P 存在的概率,如果我们不知道没有对应的 A,我是否正确地假设在你的解决方案的第二步将 As 偏移 -(n-1)distance 我可以将所有 As 切碎 B 距离,如果这些切碎的位与集合相交,则确实相交。
  • 我不确定。在每个 B 存在的概率的情况下,您是在询问是否保证了交叉点(对于存在的每个 B 组合),还是只是可能的(对于至少一个)?对于第二种情况,这很容易——假设它们都存在。对于其他情况,如果给定的 B 不存在,您是否会跳过它并留一个空格,然后跳过相应的 A?在这种情况下,其余的应该匹配相同。如果不留空间,就可以创建一个不相交不是吗,除非所有A都与B距离时间A一样大?也许我没有正确理解你。
  • 就是你描述的第二种情况:如果一个B不存在,我们就跳过对应的A,留一个空格。问题是,在这种情况下,我们没有乘以偏移每个 A 的距离以获得交点的因子。
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多