让:
S(n,k) 是大小为k 的{1,...n} 的不相邻子集的集合
显然,S(n-1,k) 是一组大小为 k 的不相邻子集,它是 S(n,k) 的子集。
另外,S(n-2,k-1) 是一组大小为k-1 的不相邻子集,并且这些子集都不包括n-1。因此,我们可以安全地将{n} 添加到每个子集中,以获得大小为k 的子集。而且由于它们不包括n-1(与n 唯一相邻的元素),它们也是不相邻的。
因此:
S(n,k) = S(n-1,k) U ({n} X S(n-2,k-1))
使用一些实数,让我们尝试求解S(6,3)。
S(6,3) = S(5,3) U ({6} X S(4,2))
S(5,3) = {1,3,5} # Only one solution
S(4,2) = S(3,2) U ({4} X S(2,1))
S(3,2) = {1,3} # Only one solution
S(2,1) = {1} {2} # All sets of 1 element are non-adjacent
{4} X S(2,1) = {1,4} {2,4} # Add {4} to each
S(4,2) = {1,3} {1,4} {2,4}
{6} X S(4,2) = {1,3,6} {1,4,6} {2,4,6}
S(6,3) = {1,3,5} {1,3,6} {1,4,6} {2,4,6}
哪个符合你的答案。
现在,计算数字:
设N(n,k)为S(n,k)中的元素个数
然后:
N(n,k) = N(n-1,k) + N(n-2,k-1)
我还没有确定封闭形式,但这里有一些计算值:
n k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 k=10 k=11 k=12 k=13
1 1
2 2
3 3 1
4 4 3
5 5 6 1
6 6 10 4
7 7 15 10 1
8 8 21 20 5
9 9 28 35 15 1
10 10 36 56 35 6
11 11 45 84 70 21 1
12 12 55 120 126 56 7
13 13 66 165 210 126 28 1
14 14 78 220 330 252 84 8
15 15 91 286 495 462 210 36 1
16 16 105 364 715 792 462 120 9
17 17 120 455 1001 1287 924 330 45 1
18 18 136 560 1365 2002 1716 792 165 10
19 19 153 680 1820 3003 3003 1716 495 55 1
20 20 171 816 2380 4368 5005 3432 1287 220 11
21 21 190 969 3060 6188 8008 6435 3003 715 66 1
22 22 210 1140 3876 8568 12376 11440 6435 2002 286 12
23 23 231 1330 4845 11628 18564 19448 12870 5005 1001 78 1
24 24 253 1540 5985 15504 27132 31824 24310 11440 3003 364 13
25 25 276 1771 7315 20349 38760 50388 43758 24310 8008 1365 91 1
26 26 300 2024 8855 26334 54264 77520 75582 48620 19448 4368 455 14