The OEIS mourns the passing of Jim Simons and is grateful to the Simons Foundation for its support of research in many branches of science, including the OEIS.
login
The OEIS is supported by the many generous donors to the OEIS Foundation.

 

Logo
Hints
(Greetings from The On-Line Encyclopedia of Integer Sequences!)
A336282 Number of heapable permutations of length n. 1

%I #83 Nov 18 2020 10:23:59

%S 1,1,1,2,5,17,71,359,2126,14495,111921,966709,9243208,96991006,

%T 1108710232,13719469288,182771488479,2608852914820,39730632184343,

%U 643142016659417,11029056364607167,199761704824369543,3811075717138755529,76396392619230455931,1605504868758470118493

%N Number of heapable permutations of length n.

%C A permutation is heapable if there exists a binary heap with the numbers added to the heap in the order of the permutation, and you may not change already placed numbers.

%C We provide two programs: The first, given below in the Python section, demonstrates the notion of 'heapable'. It is, however, of big O roughly n!. A second program, given in the Links section, groups heapable sequences into equivalence classes using an extended signature. The big O of this algorithm is roughly 3^n.

%C We notice that the number of equivalence classes at each step appears to follow A001006, but this has not yet been proven.

%H Mario Tutuncu-Macias, <a href="/A336282/b336282.txt">Table of n, a(n) for n = 0..29</a>

%H John Byers, Brent Heeringa, Michael Mitzenmacher, and Georgios Zervas, <a href="https://arxiv.org/abs/1007.2365">Heapable Sequences and Subsequences</a>, arXiv:1007.2365 [cs.DS], 2010.

%H G. Istrate and C. Bonchis, <a href="https://arxiv.org/abs/1502.02045">Partition into heapable sequences, heap tableaux and a multiset extension of Hammersley’s process</a>, arXiv:1502.02045 [math.CO], 2015.

%F Proven bounds:

%F A000111(n) <= a(n).

%F a(n) <= A102038(n-1) for n>1.

%e For n=4, the 5 heapable sequences are (1,2,3,4), (1,2,4,3), (1,3,2,4), (1,3,4,2), (1,4,2,3). Notice that (1,4,3,2) is missing.

%o (Python)

%o from itertools import permutations

%o def isHeapable(seq):

%o sig = [0 for _ in range(len(seq))]

%o sig[0] = 2

%o for j in seq[1:]:

%o sig[j] = 2

%o while j > -1:

%o j -= 1

%o if sig[j] > 0:

%o sig[j] -= 1

%o break

%o if j == -1:

%o return False

%o return True

%o def A336282(n):

%o if n == 0: return 1

%o x = permutations(range(n))

%o return sum(1 for h in x if isHeapable(h))

%o print([A336282(n) for n in range(12)])

%o (Python)

%o class EquivalenceClass:

%o def __init__(self, example, count):

%o self.example = example

%o self.count = count

%o def extendedSig(seq, key, n):

%o key = eval(key)

%o top = seq.index(n - 1)

%o attachement = top - 1

%o for i in range(attachement, -1, -1):

%o if key[i] > 0:

%o key[i] -= 1

%o key.insert(top, 2)

%o return key

%o e_list = [{"[2]": EquivalenceClass([0], 1)}, {}]

%o def A(n):

%o if n < 2:

%o return 1

%o el_0 = e_list[0]

%o el = e_list[1]

%o for key in el_0:

%o seq = el_0[key].example

%o for j in range(n - 1, 0, -1):

%o p = seq[0:j] + [n - 1] + seq[j:]

%o res = extendedSig(p, key, n)

%o if not res:

%o break

%o s = str(res)

%o c = el_0[key].count

%o if s in el:

%o el[s].count += c

%o else:

%o el[s] = EquivalenceClass(p, c)

%o e_list[0] = el

%o e_list[1] = {}

%o return sum(el[key].count for key in el)

%o def A336282List(size):

%o return [A(k) for k in range(size)]

%o print(A336282List(12))

%Y Cf. A056971, A000111, A102038, A001006.

%K nonn

%O 0,4

%A _Benjamin Chen_, _Michael Y. Cho_, _Mario Tutuncu-Macias_, _Tony Tzolov_, Jul 15 2020

%E a(14) from _Seiichi Manyama_, Jul 20 2020

%E a(15)-a(20) from _Mario Tutuncu-Macias_, Jul 22 2020

%E Extended beyond a(20) by _Mario Tutuncu-Macias_, Oct 27 2020

Lookup | Welcome | Wiki | Register | Music | Plot 2 | Demos | Index | Browse | More | WebCam
Contribute new seq. or comment | Format | Style Sheet | Transforms | Superseeker | Recents
The OEIS Community | Maintained by The OEIS Foundation Inc.

License Agreements, Terms of Use, Privacy Policy. .

Last modified May 15 05:46 EDT 2024. Contains 372538 sequences. (Running on oeis4.)