关系操作中的扩展、合并、打包与解包
1. 区间相关定义与问题解答
1.1 区间定义条件
对于区间集合 (X) 中的区间 (i),它必须是 (X) 中至少一个区间 (i_2) 的端点(这里 (i_1) 和 (i_2) 不一定不同)。为了确保 (i_1) 既不在 (i_2) 之后开始,也不在 (i_2) 之后结束,我们要求 (b_1 \leq b_2) 且 (e_1 \leq e_2),这样就能明确 (BEGIN(i)) 是 (b_1),而不是 (b_2);(END(i)) 是 (e_2),而不是 (e_1)。
同时,代码中的第 4 到 6 行保证了 (X) 中不存在包含 (BEGIN(i)) 的前一个元素 (b - 1) 的区间,因为如果存在这样的区间,它必须与 (i) 合并。同理,第 8 到 10 行保证了 (X) 中不存在包含 (END(i)) 的后一个元素 (e + 1) 的区间。最后,第 12 到 15 行保证了如果 (i_1) 和 (i_2) 之间存在“间隙”(即 (i_1) 与 (i_2) 不相邻),那么这个间隙中的每个点都包含在 (X) 中的某个区间内,因此可以合理地包含在 (i) 中。
1.2 不同情况下的结果
针对集合 (X) 的不同情况,有以下结果:
- 当 (X) 为空时,(COLLAPSE(X)) 等于 (X)。
- 当 (X) 只包含一个区间时,(COLLAPSE(X)) 也等于 (X)。
- 当 (X) 包含一个起始点等于 (FIRST_T()) 或结束点等于 (LAST_T()) 的区间时,具体情况可参考上述解释的第四句。
超级会员免费看
订阅专栏 解锁全文
4849

被折叠的 条评论
为什么被折叠?



