Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

Etiqueta: Prácticas MAD

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))$

MAD: Combinaciones con maxima

Posted on 6 de mayo de 2026

Sabemos que \[\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}\] Ejercicio: Crear una función recursiva que nos permita calcular \[\binom{n}{k}\] Solución: (%i1) /* Definición de la función para un número binomial recursiva */binomio(n,k):=    if…

MAD: Teoría combinatoria

Posted on 29 de abril de 2026

Comenzamos la parte de Teoría combinatoria, recordando las definiciones de Conjuntos, cardinalidad, partes de un conjunto. Unión e intersección de conjuntos. Aplicaciones entre conjuntos finitos Dominio, rango e imagen. Inyectivas, sobreyectivas biyectivas…

MAD: Laplaciana de un grafo

Posted on 22 de abril de 2026

Sea \(G(V,E)\) un grafo simple y sin bucles con \(|V|=n\) y sea \(A\) la matriz \(n\times n\) de adyacencia del grafo. Como la matriz es real y simétrica, se puede diagonalizar mediante…

MAD: Representación matricial de un grafo

Posted on 15 de abril de 2026

Matriz de adyacencia Si tenemos un grafo \(G=(V,E)\) donde \(V=\{v_1,…,v_n\}\), llamamos matriz de adyacencia del grafo a la matriz cuadrada nxn, \(A=[a_{ij}]\), donde \[a_{ij}=\left\{\begin{matrix}1 & \mbox{si } \{v_i,v_j\}\in E\\ 0 & \mbox{si…

MAD: graphs: grafos con maxima

Posted on 25 de marzo de 2026

graphs El paquete graphs proporciona estructuras de datos de grafos y dígrafos para Maxima. Los grafos y dígrafos son simples (no tienen aristas múltiples ni bucles), aunque los dígrafos pueden tener una…

MAD: Ecuaciones diofánticas y de congruencias con maxima

Posted on 11 de marzo de 2026

Ecuación de congruencias Recordemos, para resolver la ecuación \(aX\equiv b {\pmod {n}}\), \((aX \equiv b (n))\), cuando \(\mathbf{mcd}(a,n)=1\), utilizamos bien solución de Bézout, bien la función \(\varphi\) de Euler. Ejemplo: Resolver la…

MAD: Congruencias con maxima

Posted on 25 de febrero de 2026

Restos potenciales Veamos el siguiente ejercicio: Ejemplo: Dado \(n=71\cdots 71\), donde la pareja 71 se repite 10 veces, ¿cuál es su resto al dividirlo por 17? Solución: El número en cuestión es…

MAD: El mcd con maxima

Posted on 18 de febrero de 2026

El pasado día vimos que el algoritmo de Euclides se fundamenta en el teorema: Teorema: Si \(a\) y \(b\) son números enteros, \[\mathbf{mcd}(a,b)=\mathbf{mcd}(b,r),\] donde \(r\) es el resto del algoritmo de la…

El algoritmo de la división con maxima

Posted on 11 de febrero de 2026

1. El algoritmo de la división Dados dos números enteros \(a\) y \(b\), con \(a\) no nulo, la división euclídea asocia un cociente \(q\in\mathbb{Z}\) y un resto \(r\in\mathbb{Z}\), únicos, que verifican: \[b=q\,a+r,\quad…

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