对于任意整数 ci>0,定义拆分序列 S={20,21,22,…,2k,R},其中:
- k 为满足 2k+1−1≤ci 的最大整数;
- R=ci−(2k+1−1)。
命题: 利用集合 S 中的元素进行加法组合,可以表示出 [0,ci] 区间内的任意整数 x。
引理: 集合 Sbase={20,21,…,2k} 可以唯一表示 [0,2k+1−1] 范围内的所有整数。
证明(利用归纳法):
- 基础步骤:当 k=0 时,Sbase={1},可表示 [0,1];
- 归纳假设:假设 {20,…,2k−1} 可以表示 [0,2k−1] 的所有整数。
- 归纳步骤:对于任意 x∈[0,2k+1−1]:
- 若 x≤2k−1,由归纳假设可知其可被 {20,…,2k−1} 表示。
- 若 x≥2k,则 x′=x−2k∈[0,2k−1]。由归纳假设,x′ 可被表示,故 x=x′+2k 可由 {20,…,2k−1,2k} 表示。
- 证毕。
现需证明对于 x∈[2k+1,ci],该区间内的所有整数均可被表示。
根据 R 的定义,R=ci−(2k+1−1),即 ci=(2k+1−1)+R。
对于任意 x∈[2k+1,ci],我们令 x′=x−R。
- 由于 x≤ci,则 x′=x−R≤ci−R=2k+1−1。
- 由于 x≥2k+1 且 R<2k+1(若 R≥2k+1,则 k 的取值将更大,与定义矛盾),故 x′=x−R≥2k+1−2k+1=0。
因此,x′∈[0,2k+1−1]。根据引理 1,该范围内的任何整数均可由 Sbase 组合表示。
通过上述证明,我们得出:
- 区间 [0,2k+1−1] 由二进制基 {20,…,2k} 覆盖;
- 区间 [2k+1,ci] 通过 R 加上区间 [0,ci−R] 内的数进行覆盖,而 [0,ci−R] 是 [0,2k+1−1] 的子集。
因此,集合 {20,21,…,2k,R} 是 [0,ci] 的完备基。