[seqfan] Re: A001250, A001251, A001252, A001253 counting permutations

Max Alekseyev maxale at gmail.com
Fri May 4 13:50:27 CEST 2012


Sean,
I took a liberty to correct and edit the sequences A001251, A001252,
A001253 as you suggested.
I also provided b-files with first 100 terms for them.
Regards,
Max

On Fri, May 4, 2012 at 12:00 AM, Sean A. Irvine <sairvin at xtra.co.nz> wrote:
> Thanks Max, Ron, Wouter, and Neil for taking the time to give confirmations,
> various programs, and extra clues. It seems fairly clear now, that the later
> terms of these sequences in the DKB are wrong. I'll update the corresponding
> OEIS entries within the next few days (bit busy right now).
>
> Sean.
>
>
> On 05/04/12 10:27, Ron Hardin wrote:
>>
>> You can do a cached recurrence, anyway this bc(1) program seems to work
>> $ bc -q formula.b
>> grand(10,6)
>> 10 6 39420  [= row, col, and result]
>> 0
>> quit
>> $ bc -q formula.b
>> grand(15,3)
>> 15 3 499676669254
>> 0
>> quit
>>
>> formula.b is
>> define count(curseqlen,nleft,nabove,hasmaxseq) {
>>     auto sum,h,k,hash;
>>     if(nleft==0) {
>>         if(hasmaxseq)return 1;
>>         return 0;
>>     }
>>
>>
>> hash=curseqlen+(maxseq+1)*(nleft+(permlength+1)*(nabove+(permlength+1)*hasmaxseq));
>>
>>     if(sv[hash])return sv[hash];
>>     sum=0;
>>     if(curseqlen<maxseq) {
>>         for(k=1; k<=nabove; k++) {
>>             h=hasmaxseq;
>>             if(curseqlen+1==maxseq)h=1;
>>             sum+=count(curseqlen+1,nleft-1,nabove-k,h);
>>         }
>>     }
>>     for(k=1; k<=nleft-nabove; k++) {
>>         sum+=count(1,nleft-1,nleft-nabove-k,hasmaxseq);
>>     }
>>     sv[hash]=sum;
>>     return sum;
>> }
>> define grand(row,col) {
>>     auto sum,i;
>>     maxseq=col-1;
>>     permlength=row-1;
>>     sum=0;
>>     for(i=0; i<=permlength; i++)sum+=count(0,permlength,i,0);
>>     print row," ",col," ",sum,"\n";
>> }
>>
>> You have to run it anew when you change row and col because it caches old
>> values
>> of count() in sv[].
>>
>> Matching row and col to maxseq and permlength was done empirically.  Too
>> hard to
>> figure out.
>>
>> The idea is that all that matters when adding the rest of a permutation is
>> 1. the current run length (direction doesn't matter)
>> 2. the number of elements left to be added
>> 3. the number of these that would extend the current sequence
>> 4. a flag indicating whether the permutation already contains a maximal
>> run
>>
>> and the result has to be cached so it's not recomputed.
>>
>> bc(1) limits arrays to around 10,000.
>>
>> Maybe somebody can do it in a better language!
>>
>> Program may not work for small row and col, I haven't tried it.
>>
>> rhhardin at mindspring.com
>> rhhardin at att.net (either)
>>
>>
>>
>>
>>> -----Original Message----- From: Sean A.  Irvine
>>> Sent: Wednesday, May 02, 2012 10:37 PM
>>> To: Sequence Fanatics  Discussion list
>>> Subject: [seqfan] A001250, A001251, A001252, A001253 counting
>>>  permutations
>>>
>>> The sequences A001250, A001251, A001252, A001253 (and  possibly a few
>>> others)
>>> count runs in permutations. Their current values appear  to be taken from
>>> Table
>>> 7.4.2 in "Symmetric Function and Allied Tables" by David,  Kendall, and
>>> Barton.
>>> For example, A001251, gives the number of permutations of  1,2,...,n such
>>> that
>>> the longest run (either ascending or descending) is  precisely 3.
>>>
>>> I would like to give these sequences more precise titles and  extend them
>>> in
>>> the OEIS. But, I have run into a problem. My computed values for  these
>>> sequences differ from those in the original reference for n>=13. I
>>>  computed my
>>> values by brute force so I am inclined to believe them, but it is  always
>>> possible I have overlooked something. Given the book was published in
>>>  1966, it
>>> seems unlikely that the entire original table (which goes up to n=14)
>>>  was
>>> computed by brute force, but I could find no obvious generating function
>>> or
>>> recurrence in the book or other explanation as to how they produced their
>>> table.
>>> It seems likely that such a recurrence should exist, but it eludes  me.
>>>
>>> Here are my brute force numbers for permutations of length n. Each  row
>>> sums to
>>> n! as expected. For the case l=2 (A001250) my numbers agree with the
>>>  formula
>>> and entries in the OEIS, but for A001251, A001252, A001253 they do  not.
>>>
>>> n l=0, l=1, l=2, l=3, etc...
>>> 1 [0, 1]
>>> 2 [0, 0, 2]
>>> 3 [0, 0,  4, 2]
>>> 4 [0, 0, 10, 12, 2]
>>> 5 [0, 0, 32, 70, 16, 2]
>>> 6 [0, 0, 122, 442,  134, 20, 2]
>>> 7 [0, 0, 544, 3108, 1164, 198, 24, 2]
>>> 8 [0, 0, 2770, 24216,  10982, 2048, 274, 28, 2]
>>> 9 [0, 0, 15872, 208586, 112354, 22468, 3204, 362,  32, 2]
>>> 10 [0, 0, 101042, 1972904, 1245676, 264538, 39420, 4720, 462, 36,  2]
>>> 11 [0, 0, 707584, 20373338, 14909340, 3340962, 514296, 64020, 6644, 574,
>>>  40,
>>> 2]
>>> 12 [0, 0, 5405530, 228346522, 191916532, 45173518, 7137818, 913440,
>>>  98472,
>>> 9024, 698, 44, 2]
>>> 13 [0, 0, 44736512, 2763212980, 2646100822,  652209564, 105318770,
>>> 13760472,
>>> 1523808, 145080, 11908, 834, 48, 2]
>>> 14 [0, 0,  398721962, 35926266244, 38932850396, 10024669626, 1649355338,
>>> 219040274,  24744720, 2419872, 206388, 15344, 982, 52, 2]
>>> 15 [0, 0, 3807514624,  499676669254, 609137502242, 163546399460,
>>> 27356466626,
>>> 3681354658, 422335056,  42129360, 3690960, 285180, 19380, 1142, 56, 2]
>>>
>>> I would appreciate either  an independent verification of my numbers or
>>> some
>>> insight into a way of  computing these numbers without recourse to brute
>>>  force.
>>>
>>> Sean.
>>
>>
>> _______________________________________________
>>
>> Seqfan Mailing list - http://list.seqfan.eu/
>>
>
>
> _______________________________________________
>
> Seqfan Mailing list - http://list.seqfan.eu/



More information about the SeqFan mailing list