login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

Number of subsets of {1,...,n} not containing {a,a+2,a+4} for any a.
3

%I #14 Sep 08 2022 08:46:01

%S 1,2,4,8,16,28,49,91,169,312,576,1056,1936,3564,6561,12069,22201,

%T 40826,75076,138096,254016,467208,859329,1580535,2907025,5346880,

%U 9834496,18088448,33269824,61192712,112550881,207013417,380757169,700321570,1288092100

%N Number of subsets of {1,...,n} not containing {a,a+2,a+4} for any a.

%C Also, the number of bitstrings of length n not containing 10101,11101,10111 or 11111.

%H G. C. Greubel, <a href="/A209410/b209410.txt">Table of n, a(n) for n = 0..1000</a>

%H <a href="/index/Rec#order_09">Index entries for linear recurrences with constant coefficients</a>, signature (1, 0, 2, 0, 2, 2, 0, -1, -1).

%F a(n) = 2^n - A209409(n).

%F a(n) = t[floor(n/2)+2]*t[floor((n+1)/2)+2] where t(n) is the n-th tribonacci number.

%F a(n) = a(n-1) + 2*a(n-3) + 2*a(n-5) + 2*a(n-6) - a(n-8) - a(n-9).

%F G.f.: (1 + 1*x + 2*x^2 + 2*x^3 + 4*x^4 + 2*x^5 - 1*x^6 - 2*x^7 - x^8)/((-1 + x + x^2 + x^3)*(-1 - x^2 - x^4 + x^6)).

%e For n=5, subsets containing {a,a+2,a+4} occur only when a=1. There are 2^2 subsets including {1,3,5}, thus a(5) = 2^5 - 4 = 28.

%t LinearRecurrence[{1, 0, 2, 0, 2, 2, 0, -1, -1}, {1, 2, 4, 8, 16, 28, 49, 91, 169}, 40]

%o (Python)

%o #Returns the actual list of valid subsets

%o def avoidscode(n,bitstring=(1,0,1,0,1)):

%o .patterns=list()

%o .for start in range (1,n-len(bitstring)+2):

%o ..s=set()

%o ..for i in range(len(bitstring)):

%o ...if bitstring[i]:

%o ....s.add(start+i)

%o ..patterns.append(s)

%o .s=list()

%o .for i in range(sum(bitstring)):

%o ..for smallset in comb(range(1,n+1),i):

%o ...s.append(smallset)

%o .for i in range(sum(bitstring),n+1):

%o ..for temptuple in comb(range(1,n+1),i):

%o ...tempset=set(temptuple)

%o ...for sub in patterns:

%o ....if sub <= tempset:

%o .....status=False

%o .....break

%o ...if status:

%o ....s.append(tempset)

%o .return s

%o #Counts all such sets

%o def countavoidscode(n,bitstring=(1,0,1,0,1)):

%o .return len(avoidscode(n))

%o #From recurrence

%o def a(n, adict={0:1, 1:2, 2:4, 3:8, 4:16, 5:28, 6:49, 7:91, 8:169}):

%o .if n in adict:

%o ..return adict[n]

%o .adict[n]=a(n-1) + 2*a(n-3) + 2*a(n-5) + 2*a(n-6) - a(n-8) - a(n-9)

%o .return adict[n]

%o (PARI) x='x+O('x^30); Vec((1+x+2*x^2+2*x^3+4*x^4+2*x^5-x^6-2*x^7-x^8)/( (-1+x+x^2+x^3)*(-1-x^2-x^4+x^6))) \\ _G. C. Greubel_, Jan 05 2018

%o (Magma) I:=[1, 2, 4, 8, 16, 28, 49, 91, 169]; [n le 9 select I[n] else Self(n-1)+2*Self(n-3)+2*Self(n-5)+2*Self(n-6)-Self(n-8)-Self(n-9): n in [1..30]]; // _G. C. Greubel_, Jan 05 2018

%Y Cf. A209408, A209409

%K nonn,easy

%O 0,2

%A _David Nacin_, Mar 08 2012