给定整数n(n⩾3),记f(n)为集合{1,2,⋯,2n−1}的满足如下两个条件的子集A的元素个数的最小值:
① 1∈A,2n−1∈A;
② A中的元素(除1外)均为A中另外两个元素(可以相同)的和.
(1)求f(3)的值;
(2)求证:f(100)⩽108.
首先,取集合{1,2,3,5,7}可以说明f(3)⩽5;
接下来只需要说明不满足符合条件的4个元素的集合.
由于7∈A,根据条件②,只需要逐一验证{1,2,5,7},{1,3,4,7},{1,2,6,7},1,3,6,7},{1,4,6,7},{1,5,6,7}即可.不难得到以上集合均不符合要求,因此f(3)⩾5.
综上,f(3)=5.
(2)尝试用递推的方式解决问题.
首先尝试如何从n→n+1.假设现在手头已经有一个满足题意的集合A={1,⋯,2n−1}它包含f(n)个元素,那么是否可以对此集合加以改造(增加若干元素),使得它对n+1的情形也符合题意呢?
毫无疑问,元素2n+1−1应当马上放入集合A.为了使得2n+1−1可以表示为集合A中的两个元素之和,还应当放入元素2n,2n+1,⋯,2n+1−2中的至少一个.
稍加尝试可知确定放入元素2n就可以了,此时集合A∪{2n,2n+1−1}在n+1的情形时符合题意.
这样我们就得到了递推式f(n+1)⩽f(n)+2.
但这个递推式的成本很高,每将n推进1,需要增加2个元素.也就是无法应用该递推式得到f(100)⩽108这么好的结果.
接下来寻找成本更为低廉的递推式,考虑n→2n.此时面临的困难在于如何迅速从2n−1到达22n−1.
事实上,每次翻番是非常好的前进方式:2n+1−2,2n+2−22,⋯,22n−2n,此时由于(22n−2n)+(2n−1)=22n−1,因此A∪{2n+1−2,2n+2−22,⋯,22n−2n,22n−1}是在2n的情形时符合题意的集合.
据此,我们有递推式f(2n)⩽f(n)+n+1.
这个递推式的成本基本上和结论要求很相近了,接下来只需要交替使用这两种递推式(优先使用第二个递推式)就可以得到f(100)⩽108.
据此,我们又递推式f(2n)<=f(n)+n+1上面一行应该是“在2n的情况下符合题意的集合”吧!