Aquí es una observación. Aunque estoy seguro de que el anterior tratamiento avanzado merece protagonismo, me gustaría señalar que uno puede obtener buenos resultados (bivariante funciones de generación) simplemente mediante el análisis de un mínimo de autómata con los prefijos de $w$ como los estados y de computación en la transición de un prefijo a otro de modo que el máximo de prefijo es elegido en cada paso, y a partir de entonces resolver el sistema resultante de la probabilidad de generación de funciones. Muy simple, de hecho. Las funciones de generación en $z$ e $u$ donde $z$ los índices de la longitud de la cadena y $u$ el número de ocurrencias de $w.$ Estas rendimiento condicional resultados, es decir, el PGF para un cierto estado da la distribución de probabilidad de ocurrences de $w$ como un polinomio en $u$ (que es el coeficiente de $z^n$ de la PGF) dado que el autómata está en ese estado. Para obtener todas las apariciones, la suma de las fuerzas progubernamentales para todos los estados y extraer los coeficientes.
El ejemplo ha $w=101$, dando funciones de generación
$$\begin{align}
a & =-2\,{\frac {{z}^{2}u+2\,z-4}{8-8\,z-2\,{z}^{2}u+{z}^{3}u+2\,{z}^{2}-{z}^
{3}}},\\
a_1 & =-{\frac { \left( -4+{z}^{2}u \right) z}{8-8\,z-2\,{z}^{2}u+{z}^{3}u+
2\,{z}^{2}-{z}^{3}}}\\
a_{10} & =2\,{\frac {{z}^{2}}{8-8\,z-2\,{z}^{2}u+{z}^{3}u+2\,{
z}^{2}-{z}^{3}}}\\
a_{101} & ={\frac {{z}^{3}u}{8-8\,z-2\,{z}^{2}u+{z}^{3}u+2\,{z}^{2}-{z}^{3}}}
\end{align}$$
Añadir estos y simplificar para obtener
$$ g(z, u) = -2\,{\frac {{z}^{2}u-4-{z}^{2}}{8-8\,z-2\,{z}^{2}u+{z}^{3}u+2\,{z}^{2}-{z}^{3}}}.$$
Finalmente extraer el coeficiente de $[u^2]$, al pasar
$$ [u^2] g(z, u) = 8\,{\frac {{z}^{5} \left( -2+z \right) }{ \left( -8+8\,z-2\,{z}^{2}+{z}^{3}\right) ^{3}}}.$$
Ahora los coeficientes (veces $2^n$ porque tenemos un PGF) de este último término (a partir de $n=5$)
$$1, 5, 15, 38, 91, 210, 468, 1014, 2151, 4487, 9229, 18756, 37728, 75219, 148803, 292354,$$
y de hecho hay quince de estos para $n=7$.
Vamos a tratar otro ejemplo, $w=1111.$ se obtiene el siguiente conjunto de las fuerzas progubernamentales:
$$\begin{align}
a & =-8\,{\frac {-2+uz}{16-8\,uz-8\,z+4\,{z}^{2}u-4\,{z}^{2}+2\,{z}^{3}u-2\,{
z}^{3}+{z}^{4}u-{z}^{4}}}\\
a_{1} & =-4\,{\frac {z \left( -2+uz \right) }{16-8\,uz-8
\,z+4\,{z}^{2}u-4\,{z}^{2}+2\,{z}^{3}u-2\,{z}^{3}+{z}^{4}u-{z}^{4}}}\\
a_{11} & =-2\,
{\frac {{z}^{2} \left( -2+uz \right) }{16-8\,uz-8\,z+4\,{z}^{2}u-4\,{z}^{2}+2\,{z}^
{3}u-2\,{z}^{3}+{z}^{4}u-{z}^{4}}}\\
a_{111} & =-{\frac {{z}^{3} \left( -2+uz
\right) }{16-8\,uz-8\,z+4\,{z}^{2}u-4\,{z}^{2}+2\,{z}^{3}u-2\,{z}^{3}+{z}^{4}u-{z}
^{4}}}\\
a_{1111} & ={\frac {{z}^{4}u}{16-8\,uz-8\,z+4\,{z}^{2}u-4\,{z}^{2}+2\,{z}^{3
}u-2\,{z}^{3}+{z}^{4}u-{z}^{4}}}
\end{align}$$
Agregar y simplificar para obtener
$$ g(z,u) = -2\,{\frac {-8+4\,uz-4\,z+2\,{z}^{2}u-2\,{z}^{2}+{z}^{3}u-{z}^{3}}{16-8\,uz-8\,z+4\,{z}^{2}u-4\,{z}^{2}+2\,{z}^{3}u-2\,{z}^{3}+{z}^{4}u-{z}^{4}}}.
$$
Ahora supongamos que queremos que el contar con cuatro ocurrences de $w$ a que la PGF
$$ [u^4] g(z,u) = 16\,{\frac {{z}^{7} \left( -8+4\,z+2\,{z}^{2}+{z}^{3} \right) ^{3}}{ \left( -16+8\,
z+4\,{z}^{2}+2\,{z}^{3}+{z}^{4} \right) ^{5}}}.$$
Claramente necesitamos al menos siete bits, y de hecho la secuencia (veces $2^n$ porque tenemos un PGF) de los coeficientes de este último término es (a partir de $n=7$)
$$ 1, 2, 5, 12, 31, 71, 163, 369, 829, 1835, 4032, 8795, 19064, 41081.$$
Estoy publicando el Arce código que he utilizado para calcular estos y el lector es invitado a probarlo al invocar la función "eqsys" con una lista de los bits de la palabra $w$).
Aquí es un reto para el lector: verificar de forma independiente que el acumulado de PGF para $w=10101$ está dado por
$$ g(z, u) = -2\,{\frac {4\,{z}^{2}u-16-4\,{z}^{2}+{z}^{4}u{z}^{4}}{8\,{z}^{3}u-32\,z-8\,{z}^{2
}u+32-8\,{z}^{3}-2\,{z}^{4}u+8\,{z}^{2}+2\,{z}^{4}-{z}^{5}+{z}^{5}u}}.$$
Este es el Arce código:
prfx :=
proc(w ww)
local pos, s1, s2;
para pos de nops(ww) a 1 por -1 ¿
s1 := cat(seq(w[k], k=1..pos));
s2 := cat(seq(ww[k], k=nops(ww)-pos+1..nops(ww)));
si s1=s2, a continuación, volver s1; fi;
od;
return "";
end;
eqsys :=
proc(w)
local mx, prf, ww, ww_name, sysl, eq, eqs_tbl;
sysl := [];
para mx de 0 a nops(w)-1 ¿
ww := [seq(w[k], k=1..mx), 0];
ww_name := cat(`a`, seq(ww[k], k=1..nops(ww)-1));
prf := cat(`a`, prfx(w ww));
sysl := [op(sysl), [prf, ww_name, 0]];
ww := [seq(w[k], k=1..mx), 1];
ww_name := cat(`a`, seq(ww[k], k=1..nops(ww)-1));
prf := cat(`a`, prfx(w ww));
sysl := [op(sysl), [prf, ww_name, 1]];
od;
ww := [seq(w[k], k=2..nops(w)), 0];
ww_name := cat(`a`, seq(w[k], k=1..nops(w)));
prf := cat(`a`, prfx(w ww));
sysl := [op(sysl), [prf, ww_name, 0]];
ww := [seq(w[k], k=2..nops(w)), 1];
ww_name := cat(`a`, seq(w[k], k=1..nops(w)));
prf := cat(`a`, prfx(w ww));
sysl := [op(sysl), [prf, ww_name, 1]];
de impresión(sysl);
eqs_tbl := tabla();
para v en indets(sysl) ¿
si v = `a` entonces
eqs_tbl[v] := 1;
otra cosa
eqs_tbl[v] := 0;
fi;
od;
ww_name = cat(`a`, seq(w[k], k=1..nops(w)));
para eq en sysl ¿
si eq[1] = ww_name, a continuación,
eqs_tbl[eq[1]] :=
eqs_tbl[eq[1]] + 1/2*u*z*eq[2];
otra cosa
eqs_tbl[eq[1]] :=
eqs_tbl[eq[1]] + 1/2*z*eq[2];
fi;
od;
sysl := [];
para eq [índices(eqs_tbl, 'nolist')] ¿
sysl := [op(sysl), eq = eqs_tbl[eq]];
od;
de impresión(sysl);
resolver(sysl, indets(sysl) menos {u,z});
end;