El número de Stirling de segunda especie $S(n,k)$, donde
$S(n,k) = \frac{1}{k!}\sum\limits_{j=0}^k(-1)^{k-j}\left(\begin{array}{l}k\\j\end{array}\right)j^n$
Da el número de etiqueta única, desordenada particiones de $n$ elementos en $k$ particiones. Estoy interesado en la determinación de un procedimiento para la enumeración de todos estos particiones. Lo he tenido en mente es empezar con un vector
$v=\left[\begin{array}{l}i_1\\i_2\\{\vdots}\\i_n\end{array}\right]$
Y, a continuación, generar un conjunto de "partición de vectores", cada una con $n$ elementos, teniendo una forma (por $k=2$)$[x_1~x_2~\cdots~x_n]$, donde cada una de las $x_i$ es (después de algunos adecuado algoritmo elegido de $\left\{0~1\right\}$.
Yo no sé si esta pregunta era más apropiado para las Matemáticas o Stackoverflow, así que le pregunté aquí desde este sitio permite bastante formato de ecuaciones.
editar:
Gracias en parte a los comentarios de @Henry he hecho algunos progresos en los casos especiales en que $k=2$ y también para $k=3$ (donde $n$ no es divisible por $3$).
Para $k=2$, una alternativa a la primera ecuación es:
$\sum\limits_{i=1}^{[[\frac{n}{2}]]}\frac{1}{\eta\,!}\left(\begin{array}{c}n\\n-i\end{array}\right)$
donde $\eta$ es igual al número de particiones que tengan el mismo número de miembros.
Para implementar el $k=2$ caso para cualquier valor arbitrario de $n$, comenzar con un vector de $v_{\circ}$ de la longitud de la $n$ lleno de ceros, y otro vector, $v_\alpha$, con valores de $1,2,\cdots,n$, en ese orden. Generar el conjunto $A$ de las combinaciones posibles de $n-i$ elementos escogidos de $v_\alpha$. Los miembros de $A$ se utilizan para identificar los índices de los elementos de las sucesivas copias de $v_{\circ}$ cuyo valor debe ser cambiado.
En este punto, el número de vectores generados superará $S(n,2)$, debido a una partición como $[0~1~1~0]$, lo que equivale a $[1~0~0~1]$, se genera dos veces. En las soluciones que contienen dos particiones de igual tamaño, el redundante que puede ser llevado a cabo mediante la eliminación de todos los conjuntos donde $n-i = i$ que tienen un $0$ antes de cualquier $1$.
Para $k=3$, comience haciendo una lista de las $N$ posibles combinaciones de los tres tamaños de las particiones. Así, por $n=7$ hay:
$\begin{array}{lrrr} \phi_1&5&1&1\\ \phi_2&4&2&1\\ \phi_3&3&3&1\\ \phi_4&3&2&2\\ \end{array}$
El número total de posibles particiones:
$\frac{1}{2!}\a la izquierda(\begin{array}{c}7\\5\end{array}\right)\left(\begin{array}{c}2\\1\end{array}\right) + \left(\begin{array}{c}7\\4\end{array}\right)\left(\begin{array}{c}3\\2\end{array}\right)+ \frac{1}{2!}\a la izquierda(\begin{array}{c}7\\3\end{array}\right)\left(\begin{array}{c}4\\3\end{array}\right)+ \frac{1}{2!}\a la izquierda(\begin{array}{c}7\\3\end{array}\right)\left(\begin{array}{c}4\\2\end{array}\right)$
Para enumerar las particiones correspondientes a cada uno de estos términos, establecer un esquema general:
$\begin{array}{lrrr} \phi_i&a&b&c\end{array}$
para contribuir $\frac{1}{\eta\,!}\left(\begin{array}{c}n\\a\end{array}\right)\left(\begin{array}{c}b+c\\b\end{array}\right)$ posibles particiones. (Tenga en cuenta que esto podría ser simplificado a $\frac{1}{\eta\,!}\cdot\frac{n!}{a!b!c!}$, pero esto no iba a facilitar el procedimiento de cálculo.)
donde $a+b+c=n$. Empezar de nuevo con un vector de $v_\circ$ contiene $n$ ceros, y un vector $v_\alpha$ contiene $1,2,\cdots,n$. Como antes, generar el conjunto de combinaciones posibles de $a$ elementos escogidos de $v_\alpha$, y utilizar estos valores para especificar los índices en las sucesivas copias de $v_\circ$ cuyos valores deben cambiarse a 1.
Cada una de las copias de $v_\circ$ ahora contiene $a$ queridos y $b+c$ ceros.
En este punto, se requerirá el uso de una función de $W(v,j)$, que devuelve el índice relativo a la $j^{th}$ cero en el vector $v$. Ahora hacen un vector $v_\alpha^\prime$ contiene $1,2,\cdots,b+c$. Generar un conjunto $A^\prime$ de las combinaciones posibles de $b$ elementos escogidos de $v_\alpha^\prime$, y utilizar estos valores para especificar los valores de $j$ que son alimentados en $W$, que especifica los índices en copias de copias de $v_\circ$ cuyos valores deben cambiarse a $2$.
Para quitar redundante particiones, eliminar todas las copias de $v_\circ$ que contiene un $0$, que precede a todas las $2$'s, si $b=c$, y eliminar todas las copias de $v_\circ$ que contiene un $2$, que precede a todas las $1$'s, si $a=b$.