【发布时间】:2019-05-20 08:42:04
【问题描述】:
我想生成一些样本数据来处理不同类型的区间,并希望确保表示所有可能的区间关系。
出于我的目的,{meets,overlaps,is-finished-by} 是等价的,equals 可以忽略,并且 {B 开始 A,A 包含B} 也是等价的。我还将假设所有间隔都经过排序和标记,使得 A 在 B 之前开始,在 C 之前开始等等。所以我基本上对三种情况感兴趣:
- A 在 B 之前(例如 A=[1,2], B=[3,4])
- A 包含 B(例如 A=[1,4],B=[2,3])
- A 与 B 重叠(例如 A=[1,3], B=[2,4])
引入第三个区间会产生更多情况:
- A 在 B 之前,B 在 C 之前(例如 A=[1,2]、B=[3,4]、C=[5,6])
- A 在 B 之前,B 包含 C(例如 A=[1,2]、B=[3,6]、C=[4,5])
- A 在 B 之前,B 与 C 重叠(例如 A=[1,2]、B=[3,5]、C=[4,6])
- ...
虽然在 A 在 B 之前的情况下,A 也将始终在 C 之前,但对于其他变体而言,情况并非如此,我们还需要考虑 A 和 C 的关系:
- A 包含 B,B 与 C 重叠,A 与 C 重叠(例如 A=[1,5]、B=[2,4]、C=[3,6])
- A 包含 B,B 与 C 重叠,A 包含 C(例如 A=[1,6]、B=[2,4]、C=[3,5])
对于给定数量的间隔,可能有多少种不同的关系组合?
生成这些组合的算法是什么?
例如,算法可能会产生以下输出来解决两个区间的情况:
combination, interval name, start, end
1, A, 1, 2
1, B, 3, 4
2, A, 1, 4
2, B, 2, 3
3, A, 1, 3
3, B, 2, 4
【问题讨论】: