Por medio de la representación de esta discusión en un aceptable y útil estatal estoy enviando un altamente optimizado conjunto múltiple ciclo de la calculadora que se puede calcular el ciclo de los índices del total de tamaño de la partición a a $21$ con un buen equilibrio entre mantener bajo el uso de memoria y proporcionar un rápido y eficiente algoritmo (el comercio de algunos de velocidad para reducir el uso de memoria). Este hecho es posible calcular el extremadamente desafiante ciclo de índice de $\mathfrak{M}_{1,2,3,4,5,6}$ (consultar este MSE enlace para que la motivación por qué querríamos para calcular este ciclo de índice), que es
$$-{a_{{3}}}^{2}a_{{4}}a_{{5}}a_{{6}}
-a_{{2}}{a_{{4}}}^{2}a_{{5}}a_{{6}}
-a_{{2}}a_{{3}}a_{{4}}a_{{5}}a_{{7}}
-a_{{2}}a_{{3}}a_{{4}}{a_{{6}}}^{2}\\
-a_{{2}}a_{{3}}{a_{{5}}}^{2}a_{{6}}
-a_{{1}}a_{{2}}a_{{3}}a_{{5}}a_{{10}}
-a_{{1}}a_{{2}}a_{{3}}a_{{6}}a_{{9}}
-a_{{1}}a_{{2}}a_{{4}}a_{{5}}a_{{9}}\\
-a_{{1}}a_{{2}}a_{{4}}a_{{6}}a_{{8}}
-a_{{1}}a_{{2}}a_{{5}}a_{{6}}a_{{7}}
-a_{{1}}a_{{3}}a_{{4}}a_{{5}}a_{{8}}
-a_{{1}}a_{{3}}a_{{4}}a_{{6}}a_{{7}}\\
-a_{{1}}a_{{3}}a_{{5}}{a_{{6}}}^{2}
-a_{{1}}a_{{4}}{a_{{5}}}^{2}a_{{6}}
-a_{{1}}a_{{2}}a_{{3}}a_{{4}}a_{{11}}
+4\,a_{{4}}a_{{5}}{a_{{6}}}^{2}\\
-{a_{{7}}}^{3}
-8\,a_{{6}}a_{{7}}a_{{8}}
-7\,{a_{{6}}}^{2}a_{{9}}
-3\,a_{{5}}{a_{{8}}}^{2}\\
-8\,a_{{5}}a_{{7}}a_{{9}}
-15\,a_{{5}}a_{{6}}a_{{10}}
-5\,{a_{{5}}}^{2}a_{{11}}
-7\,a_{{4}}a_{{8}}a_{{9}}\\
-5\,a_{{4}}a_{{7}}a_{{10}}
-13\,a_{{4}}a_{{6}}a_{{11}}
-10\,a_{{4}}a_{{5}}a_{{12}}
-2\,{a_{{4}}}^{2}a_{{13}}\\
-3\,a_{{3}}{a_{{9}}}^{2}
-5\,a_{{3}}a_{{8}}a_{{10}}
-7\,a_{{3}}a_{{7}}a_{{11}}
-12\,a_{{3}}a_{{6}}a_{{12}}\\
-10\,a_{{3}}a_{{5}}a_{{13}}
-8\,a_{{3}}a_{{4}}a_{{14}}
-2\,{a_{{3}}}^{2}a_{{15}}
-6\,a_{{2}}a_{{9}}a_{{10}}\\
-4\,a_{{2}}a_{{8}}a_{{11}}
-4\,a_{{2}}a_{{7}}a_{{12}}
-8\,a_{{2}}a_{{6}}a_{{13}}
-8\,a_{{2}}a_{{5}}a_{{14}}\\
-8\,a_{{2}}a_{{4}}a_{{15}}
-6\,a_{{2}}a_{{3}}a_{{16}}
-2\,a_{{1}}{a_{{10}}}^{2}
-6\,a_{{1}}a_{{9}}a_{{11}}\\
-4\,a_{{1}}a_{{8}}a_{{12}}
-4\,a_{{1}}a_{{7}}a_{{13}}
-8\,a_{{1}}a_{{6}}a_{{14}}
-8\,a_{{1}}a_{{5}}a_{{15}}\\
-6\,a_{{1}}a_{{4}}a_{{16}}
-6\,a_{{1}}a_{{3}}a_{{17}}
-6\,a_{{1}}a_{{2}}a_{{18}}
+3\,a_{{2}}a_{{4}}a_{{5}}a_{{10}}\\
+a_{{2}}{a_{{4}}}^{2}a_{{11}}
+a_{{2}}a_{{3}}a_{{7}}a_{{9}}
+3\,a_{{2}}a_{{3}}a_{{6}}a_{{10}}
+3\,a_{{2}}a_{{3}}a_{{5}}a_{{11}}\\
+2\,a_{{2}}a_{{3}}a_{{4}}a_{{12}}
+a_{{1}}a_{{6}}{a_{{7}}}^{2}
+a_{{1}}{a_{{6}}}^{2}a_{{8}}
+a_{{1}}a_{{5}}a_{{7}}a_{{8}}\\
+4\,a_{{1}}a_{{5}}a_{{6}}a_{{9}}
+a_{{1}}{a_{{5}}}^{2}a_{{10}}
+a_{{1}}a_{{4}}{a_{{8}}}^{2}
+a_{{1}}a_{{4}}a_{{7}}a_{{9}}\\
+2\,a_{{1}}a_{{4}}a_{{6}}a_{{10}}
+3\,a_{{1}}a_{{4}}a_{{5}}a_{{11}}
+a_{{1}}a_{{3}}a_{{8}}a_{{9}}
+a_{{1}}a_{{3}}a_{{7}}a_{{10}}\\
+3\,a_{{1}}a_{{3}}a_{{6}}a_{{11}}
+2\,a_{{1}}a_{{3}}a_{{5}}a_{{12}}
+2\,a_{{1}}a_{{3}}a_{{4}}a_{{13}}
+a_{{1}}a_{{2}}{a_{{9}}}^{2}\\
+a_{{1}}a_{{2}}a_{{8}}a_{{10}}
+a_{{1}}a_{{2}}a_{{7}}a_{{11}}
+2\,a_{{1}}a_{{2}}a_{{6}}a_{{12}}
+2\,a_{{1}}a_{{2}}a_{{5}}a_{{13}}\\
+2\,a_{{1}}a_{{2}}a_{{4}}a_{{14}}
+2\,a_{{1}}a_{{2}}a_{{3}}a_{{15}}
+5\,a_{{3}}a_{{5}}a_{{6}}a_{{7}}
+a_{{3}}{a_{{6}}}^{3}\\
+{a_{{4}}}^{2}a_{{5}}a_{{8}}
+{a_{{4}}}^{2}a_{{6}}a_{{7}}
+a_{{4}}{a_{{5}}}^{2}a_{{7}}
+a_{{3}}{a_{{5}}}^{2}a_{{8}}\\
+24\,a_{{10}}a_{{11}}
+24\,a_{{9}}a_{{12}}
+20\,a_{{8}}a_{{13}}
+22\,a_{{7}}a_{{14}}\\
+40\,a_{{6}}a_{{15}}
+36\,a_{{5}}a_{{16}}
+30\,a_{{4}}a_{{17}}
+30\,a_{{3}}a_{{18}}\\
+24\,a_{{2}}a_{{19}}
+24\,a_{{1}}a_{{20}}
+a_{{3}}a_{{4}}{a_{{7}}}^{2}
+{a_{{3}}}^{2}a_{{6}}a_{{9}}\\
+3\,a_{{3}}a_{{4}}a_{{5}}a_{{9}}
+4\,a_{{3}}a_{{4}}a_{{6}}a_{{8}}
+{a_{{3}}}^{2}a_{{5}}a_{{10}}
+a_{{2}}{a_{{6}}}^{2}a_{{7}}\\
+{a_{{3}}}^{2}a_{{4}}a_{{11}}
+a_{{2}}a_{{5}}{a_{{7}}}^{2}
+3\,a_{{2}}a_{{5}}a_{{6}}a_{{8}}
-120\,a_{{21}}\\
+a_{{2}}{a_{{5}}}^{2}a_{{9}}
+{a_{{5}}}^{3}a_{{6}}
+4\,a_{{2}}a_{{4}}a_{{6}}a_{{9}}
+a_{{2}}a_{{4}}a_{{7}}a_{{8}}\\
+a_{{1}}a_{{2}}a_{{3}}a_{{4}}a_{{5}}a_{{6}}.$$
Otra interesante ciclo del índice es la de $\mathfrak{M}_{2,2,2,4,7}$ que es
$$1/6\,{a_{{2}}}^{3}a_{{4}}a_{{7}}-1/2\,a_{{2}}{a_{{4}}}^{2}a_{{7}}-1/2\,{a_{{2}}
}^{2}a_{{6}}a_{{7}}-1/2\,{a_{{2}}}^{2}a_{{4}}a_{{9}}-1/6\,{a_{{2}}}^{3}a_{{11}}
\\+5/6\,a_{{4}}a_{{6}}a_{{7}}+1/2\,{a_{{4}}}^{2}a_{{9}}+a_{{2}}a_{{7}}a_{{8}}+a_{
{2}}a_{{6}}a_{{9}}+3/2\,a_{{2}}a_{{4}}a_{{11}}\\+{a_{{2}}}^{2}a_{{13}}-a_{{8}}a_{
{9}}-a_{{7}}a_{{10}}-4/3\,a_{{6}}a_{{11}}-2\,a_{{4}}a_{{13}}-3\,a_{{2}}a_{{15}}
+4\,a_{{17}}.$$
Este es el código.
with(LinearAlgebra):
con(planta):
ms_varp2par :=
proc(p)
local r, v;
r := [];
para v en indets(p) ¿
r := [op(r), el grado(p, v)];
od;
sort(r);
end;
ms_cmp :=
proc(pa, pb)
local k;
si nops(pa) > nops(pb), a continuación, devolver true fi;
si nops(pa) < nops(pb) entonces devolver falso fi;
por k a nops(pa) ¿
si pa[k] > pb[k], a continuación, devolver true; fi;
si pa[k] < pb[k] then return false; fi;
od;
return true;
end;
ms_desc :=
proc(parte)
opción de recordar;
local spart, sprob, sdesc, sp, m, n, k, q, visto;
si nops(en parte) a = 1, a continuación, volver [parte] fi;
sprob := tabla(); sprob[parte] := 1; visto := tabla();
para m a nops(parte) ¿
para n de m+1 a nops(parte) ¿
q : = [[m]+[n],
seq(parte[k], k=1..m-1),
seq(parte[k], k=m+1..n-1),
seq(parte[k], k=n+1..nops(parte))];
q := sort(q);
si no tipo(ver[q], entero), a continuación,
para la sp en ms_desc(p) ¿
sprob[sp] := 1;
od;
visto[p] := 1;
fi;
od;
od;
sort([índices(sprob, 'nolist')], ms_cmp);
end;
ms_recexpand :=
proc(res, p, idx, parte, n)
local del pp, s;
si idx > nops(parte), a continuación,
pp := ms_varp2par(p);
si el tipo(res[pp], en la lista), luego
si res[pp][1] = p entonces
res[pp] := [p, res[pp][2]+1];
fi;
otra cosa
res[pp] := [p, 1];
fi;
return res;
fi;
de s a n do
ms_recexpand(res, p*sigma[s]^[idx],
idx+1, parte a, n);
od;
res;
end;
ms_coeffs :=
proc(p, n)
opción de recordar;
local visto;
visto := tabla();
ms_recexpand(visto, 1, 1, p, n);
visto;
end;
ms_allchars_opt :=
proc(parte)
opción de recordar;
local de n, p, mat, k, res, cvec, visto, q;
n := convert(parte, `+`);
res := [];
para p en ms_desc(parte) ¿
visto := ms_coeffs(p, n);
cvec := [];
por q en la ms_desc(parte) ¿
si el tipo(ver[q], en la lista), luego
cvec := [op(cvec), visto[q][2]];
otra cosa
cvec := [op(cvec), 0];
fi;
od;
res := [op(res), cvec];
od;
mat := Matrix(res);
end;
ms_allinds_opt :=
proc(parte)
opción de recordar;
local de res, dim, p, col, k, tabinit, idx, cfmat;
dim := nops(ms_desc(parte));
cfmat := ms_allchars_opt(parte);
res := MatrixInverse(cfmat, method='submarinos');
col := [];
para p en ms_desc(parte) ¿
col :=
[op(col), mul(a[p[k]], k=1..nops(p))];
od;
res := MatrixVectorMultiply(res, Vector['columna'](col));
idx := 1; tabinit := [];
para p en ms_desc(parte) ¿
tabinit := [op(tabinit), p = res[idx]];
idx := idx+1;
od;
tabla(tabinit);
end;
ms_index_opt :=
proc(parte)
opción de recordar;
local n, k, búsqueda, spart, p;
n := añadir(parte[k], k=1..nops(parte));
si n=1 y nops(en parte) a = 1, a continuación, volver a[1] fi;
spart := sort(parte);
búsqueda := ms_allinds_opt(spart);
para p en los índices(de búsqueda, 'nolist')
ms_index_opt(p) := búsqueda[p];
od;
búsqueda[spart];
end;
ms_verify_vs_opt :=
proc(n)
parte local, res;
res := [];
para la parte en la partición(n) hacer
res := [op(res), ms_index(parte)-ms_index_opt(parte a)];
od;
convertir(res, conjunto);
end;
ms_allparts_opt :=
proc(n)
local de s, p;
s := 0;
para p en la partición(n) hacer
s := s + ms_index_opt(p);
od;
s;
end;
ms_seqop_opt :=
proc(n)
local de s, p;
s := 0;
para p en la partición(n) hacer
s := s +
multinomial(n, seq(p[k], k=1..nops(p)))*
ms_index_opt(p);
od;
s;
end;
pet_cycleind_symm :=
proc(n)
local p, s;
opción de recordar;
si n=0 entonces devolver 1; fi;
ampliar(1/n*añadir(a[l]*pet_cycleind_symm(n-l), l=1..n));
end;