4

This question is about A003278, which we define as: $\ a(1) = 1,\ a(2) = 2,\ $ and thereafter $\ a(n)\ $ is smallest number $\ k\ $ which avoids any $\ 3-$term arithmetic progression in $\ a(1),\ a(2),\ \ldots,\ a(n-1),\ k.$ The first few terms are:

$$1,\ 2,\ 4,\ 5,\ 10,\ 11,\ 13,\ 14,\ 28,\ 29,\ 31,\ 32,\ 37,\ 38,\ldots$$

$$$$

For each $\ N\geq 2,\ $ let $\ A_N\ $ be the subset of $\ \{1,\ldots,\ N\}\ $ that has no three-term A.P.'s, and maximises $\ \displaystyle\sum_{n\in A_N} \frac{1}{n}.\ $

My question is, if $\ A_N \overset{n\to\infty}{\to}\ A003278\ $ in some (strong?) sense. What's the strongest true claim that is known about this?

I ran a Python program, and here are my results in a table:


\begin{array}{|c|c|c|} \hline \text{N} & A_N \\ \hline \mathbb{4} & \{1,2,4\} \\ \hline \mathbb{5} & \{1,2,4,5\} \\ \hline \mathbb{6} & \{1,2,4,5\} \\ \hline \mathbb{7} & \{1,2,4,5\} \\ \hline \mathbb{8} & \{1,2,4,5\} \\ \hline \mathbb{9} & \{1,2,4,8,9\} \\ \hline \mathbb{10} & \{1,2,4,5,10\} \\ \hline \mathbb{11} & \{1,2,4,5,10,11\} \\ \hline \mathbb{12} & \{1,2,4,5,10,11\} \\ \hline \mathbb{13} & \{1,2,4,5,10,11,13\} \\ \hline \mathbb{14} & \{1,2,4,5,10,11,13,14\} \\ \hline \mathbb{15} & \{1,2,4,5,10,11,13,14\} \\ \hline \mathbb{16} & \{1,2,4,5,10,11,13,14\} \\ \hline \mathbb{17} & \{1,2,4,5,10,11,13,14\} \\ \hline \mathbb{18} & \{1,2,4,5,10,11,13,14\} \\ \hline \mathbb{19} & \{1,2,4,5,10,11,13,14\} \\ \hline \end{array}

After this, the computation time becomes too large.

So I wonder if only $\ \{1,2,4,8,9\}\ $ "behaves badly", i.e. doesn't match the first few terms from $\ A003278.\ $

It's clear that each $\ A_N\ $ must contain the number $\ 1,\ $ for if it didn't, then reducing each member of $\ A_N\ $ by $\ \min(A_N) - 1\ $ would give a greater value of $\ \displaystyle\sum_{n\in A_N} \frac{1}{n}.\ $

But I can't even think of any argument/reason as to why $\ 2\in A_N\ $ for all sufficiently large $N.$

Edit: Here is my Python code, which I suspect is very inefficient:

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 29 08:34:17 2022

@author: adamr """ import itertools for n in range(4,22): startinglist=[] for i in range(n): startinglist.append(i+1)

'''print(list5)
print(list(itertools.combinations(list5, 3)))'''

bigSubsetlist=[]

#for L in range(3,len(startinglist) + 1):
    #for subset in itertools.combinations(startinglist, L):
        #print(subset)

for L in range(3,len(startinglist) + 1):
    for subset in itertools.combinations(startinglist, L):
        subset = list(subset)
        failedSubset=False
        for i in range(len(subset)-2):
            #if failedSubset==True:
                #break
            for j in range(i+1,len(subset)-1):
                #if failedSubset==True:
                    #break
                for k in range(j+1,len(subset)):
                    if failedSubset==True:
                        break
                    #print("index: ", i,j,k), "list: ", []
                    if subset[j] - subset[i] == subset[k] - subset[j]:
                        failedSubset=True
                        break
        if failedSubset==False:
            subset.append( sum( 1/n for n in  subset) )
            bigSubsetlist.append(subset)

#print(bigSubsetlist)

biggest_Search=[bigSubsetlist[0]]

for subList in bigSubsetlist[1:]: if subList[-1] > biggest_Search[0][-1]: biggest_Search = [subList]

print("biggest_Search= ", biggest_Search, '\n')

Adam Rubinson
  • 24,300
  • Can someone point me towards more efficient code please? – Adam Rubinson Nov 29 '22 at 18:43
  • Notice that this question is different to the longest $3$ AP-free sequence, which is discussed in this paper, for example: https://www.combinatorics.org/ojs/index.php/eljc/article/view/v19i2p15/pdf – Adam Rubinson Dec 23 '22 at 23:55

0 Answers0