Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

Día: 13 de mayo de 2026

MAD: Particiones con maxima

Posted on 13 de mayo de 2026

Recordemos que los números de Bell cumplen una relación de recurrencia muy interesante:\[B_n=\sum_{k=0}^{n-1}B_k\binom{n-1}{k}\]

Ejercicio: Utilizando la fórmula anterior, construir un algoritmo en maxima que nos calcule cualquier número de Bell.

Primero defiamos la combinaciones:

(%i1) comb(n,m):=if (m=0 or n=m) then 1 else
  comb(n− 1 ,m−1)+comb(n−1,m)$

Ya estamos en condiciones de definir los números de Bell:

(%i2) Bell(n):=block([B,b],
   B:[1,1,2],
   if (n<2) then 1 else
   if n=2 then 2 else (
       for j:3 thru n do(
           b:makelist(B[i]·comb(length(B)−1,i−1),i,1,length(B)),
           B:append(B,[sum(b[i],i,1,length(b))])
        ),
       B[n+1])
)$

(%i3) makelist(Bell(n),n,0,7);

\[\operatorname{ }\left[ 1\operatorname{,}1\operatorname{,}2\operatorname{,}5\operatorname{,}15\operatorname{,}52\operatorname{,}203\operatorname{,}877\right] \]


Sin embargo, resulta más sencillo calcularlos con el llamado triángulo de Bell.

  1. Comience con el número uno. Pon esto en una fila por sí mismo. \({\displaystyle x_{0,1}=1}\)
  2. Comience una nueva fila con el elemento más a la derecha de la fila anterior como el número más a la izquierda \(({\displaystyle x_{i,1}\leftarrow x_{i-1,r}}\) donde \(r\) es el último elemento de (i-1)-fila).
  3. Determine los números que no están en la columna izquierda tomando la suma del número a la izquierda y el número sobre el número a la izquierda, es decir, el número diagonalmente arriba y a la izquierda del número que estamos calculando(\({\displaystyle (x_{i,j}\leftarrow x_{i,j-1}+x_{i-1,j-1}}\))
  4. Repita el paso tres hasta que haya una nueva fila con un número más que la fila anterior (haga el paso 3 hasta \({\displaystyle j=r+1}\))
  5. El número en el lado izquierdo de una fila dada es el número de Bell para esa fila. \({\displaystyle B_{i}\leftarrow x_{i,1}}\)

Estas son las primeras cinco filas del triángulo construido por estas reglas:

\[\begin{array}{rrrrr} 1&&&& \\ 1&2&&& \\ 2&3&5&& \\ 5&7&10&15& \\ 15&20&27&37&52 \end{array}\]

Ejercicio: Utilizando el triángulo de Bell, construir un algoritmo con máxima que nos devuelva \(B_n\).

(%i1) numero_bell(n):=block(
   [T,i,j],
  
   /* Caso especial para n=0 */
   if n=0 then return(1),
  
   /* Creamos una lista de listas pre-rellenada con ceros */
   /* T[fila][columna] */
   T:makelist(makelist(0,j,1,i),i,1,n+1),
  
   /* Paso 1: Primer elemento */
   T[1][1]:1,
  
   /* Bucle para construir las filas */
   for i:2 thru< /span>n+1 do (
      
       /* Paso 2: El primero de la fila es el último de la anterior */
       /* En la fila (i-1), el último elemento está en la posición (i-1) */
       T[i][1]:T[i−1][i−1],
      
       /* Pasos 3 y 4: Rellenar el resto de la fila */
       for j:2 thru i do (
           T[i][j]:T[i][j−1]+T[i−1][j−1]
       )
   ),
  
   /* Paso 5: El número de Bell B_n es el primer elemento de la fila n+1 */
   return(T[n+1][1])
)$

Sabemos que los números de Stirling de segunda especie siguen la relación de recurrencia

\[ \left\{{\begin{matrix}n\\k\end{matrix}}\right\}=\left\{{\begin{matrix}n-1\\k-1\end{matrix}}\right\}+k\left\{{\begin{matrix}n-1\\k\end{matrix}}\right\}\]

con \[\left\{{\begin{matrix}0\\0\end{matrix}}\right\}=1,\quad \left\{{\begin{matrix}n\\0\end{matrix}}\right\}=0,\quad \left\{{\begin{matrix}n\\1\end{matrix}}\right\}=\left\{{\begin{matrix}n\\n\end{matrix}}\right\}=1,\quad {\mbox{ y }}\quad \left\{{\begin{matrix}n\\k\end{matrix}}\right\}=0,\ \forall k>n.\]

n \ k 0 1 2 3 4 5
0 1
1 0 1
2 0 1 1
3 0 1 3 1
4 0 1 7 6 1
5 0 1 15 25 10 1

Ejercicio: Utilizando la recurrencia anterior, construir un algoritmo con máxima que nos devuelva \[ \left\{{\begin{matrix}n\\k\end{matrix}}\right\}\]

(%i1) stirling_2(n,k):=block(
   /* Condición: si k > n, el resultado es 0 */
   if k>n then return(0),
  
   /* Condición: si n = 0 y k = 0, el resultado es 1 */
   if n=0 and k=0 then return(1),
  
   /* Condición: si n > 0 y k = 0, el resultado es 0 */
   if n>0 and k=0 then return(0),
  
   /* Casos base adicionales: n=k o k=1 */
   if k=1 or k=n then return(1),
  
   /* Relación de recurrencia */
   return(stirling2(n−1,k−1)+k·stirling2(n−1,k))
)$

El pasado día tratamos los árboles, entre ellos los árboles enraizados. Por ejemplo, en la imagen vemos todos los posibles árboles enraizados ordenados que tienen cuatro aristas y dos hojas.

Unlabeled ordered rooted trees of 4 edges and 2 leaves.svg
By Řiťopič – Own work, CC BY-SA 4.0, Link

Los árboles enraizados ordenados imponen un orden lineal (izquierda a derecha) en los hijos de cada nodo, haciendo que las permutaciones de hermanos generen árboles distintos. Un árbol enraizado ordenado parte de un árbol enraizado estándar, pero los subárboles de cada nodo se ordenan secuencialmente, como «primer hijo», «segundo hijo», etc. Esto permite referir posiciones específicas, similar a un árbol binario donde izquierda < raíz < derecha.

Proposición: Sea \({\displaystyle \mathbf{N} (n,k),n\in \mathbb {N} ^{+},1\leq k\leq n}\) el número de árboles enraizados ordenados con \(n\) lados y \(k\) hojas, entonces
\[{\displaystyle \mathbf{N} (n,k)={\frac {1}{n}}{n \choose k}{n \choose k-1}}\]

La siguiente tabla está construida con la fórmula anterior.

n \ k 1 2 3 4 5 6 7 8
1 1
2 1 1
3 1 3 1
4 1 6 6 1
5 1 10 20 10 1
6 1 15 50 50 15 1
7 1 21 105 175 105 21 1
8 1 28 196 490 490 196 28 1

Proposición: Si consideramos $\mathbf{N}(n, 1) = 1$ y $\mathbf{N}(n, n) = 1$, entonces
$$ \mathbf{N}(n, k) = \mathbf{N}(n, k-1) \cdot \frac{(n-k+1)(n-k+2)}{k(k-1)} $$

Ejercicio: Utilizando el resultado anterior, construir un algoritmo con máxima que nos devuelva \(\mathbf{N}(n,k)\).

(%i1) N(n,k):=
if k=1 or k=n then
   1
else
   N(n,k−1)·((n−k+1)·(n−k+2))/(k·(k−1))$

Novela

La Loba, la lucha fraticida por un reino

La Loba, la lucha fratricida por un reino.

Urraca, señora de Zamora, acusada de instigar la muerte de su hermano, el rey Sancho de Castilla, deberá defenderse de la acusación, al tiempo que luchará por mantener la cohesión entre los hermanos y los reinos cristianos: una lobera de fieros lobeznos.

👉 En amazon

Entradas recientes

  • MAD: Particiones con maxima
  • MAD: Particiones
  • MAD: Combinaciones con maxima
  • MAD: Números binomiales y combinaciones
  • MAD: Teoría combinatoria
mayo 2026
L M X J V S D
 123
45678910
11121314151617
18192021222324
25262728293031
« Abr    

Categorías

  • Álgebra Lineal
  • general
  • Matemática Discreta
  • MathBio

Etiquetas

Prácticas MAD Prácticas MathBio Prácticas Álgebra

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
©2026 Diario de clases | Diseño: Tema de WordPress Newspaperly