En el año 2017 publiqué en mi blog “Números y hoja de cálculo” (https://hojaynumeros.blogspot.com/) una serie de estudios sobre particiones de un número obtenidas mediante mi herramienta Cartesius.
Quedé bastante satisfecho, pero
echaba de menos poder estudiar las particiones de un número (formas de
descomponer un número natural en sumandos) para valores mayores que doce, que
es el máximo que me permitía Cartesius. He despojado los algoritmos de esta
herramienta de muchas opciones, y me he quedado con lo imprescindible para
calcular números de particiones condicionadas. Sigue siendo un proceso lento,
pero me permite, con paciencia, abordar cálculos para números mayores que doce.
Lo he incorporado a la hoja
“Buscador”, que tengo preparada para su descarga gratuita (https://www.hojamat.es/blog/buscador1.xlsm),
y con ella, y sin abandonar Cartesius, ampliaré los trabajos del año 2017.
Tres herramientas
Esta va a ser una serie de
entradas, por lo que es conveniente realizar una presentación previa de las
mismas. En primer lugar, hay que advertir que el espíritu de ellas es el de
aprendizaje y ejercitación. En este tema está todo publicado, y desde este blog
poco se puede añadir, pero sí resulta atractivo cotejar distintos métodos para
llegar a un mismo objetivo. El mejor y
más aconsejable sería el de trabajar con papel y bolígrafo, que es como mejor
se aprende, pero al final se terminará recurriendo a herramientas informáticas.
Usaremos, de forma más o menos
simultánea, tres herramientas básicas:
Cartesius
Es mi herramienta tradicional
para construir productos cartesianos condicionados. En el tema de particiones
ya he publicado muchos ejemplos, y resulta bastante sencilla de entender. Sus
condiciones resultan claras.
Descargable desde
https://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius
Buscador
En el archivo descargable
presentado más arriba he situado, en su tercera hoja, una subrutina para
realizar el mismo trabajo que el de Cartesius, pero que no sufre la restricción
de las doce columnas. Resulta también más rápida, ya que el que no sea tan general
le dota de más velocidad, pero nunca suficiente, porque todos los temas de
Combinatoria acaban por abordar cálculos que resultan muy lentos.
Dirección de descarga: https://www.hojamat.es/blog/buscador1.xlsm
PARI
Este lenguaje posee herramientas
potentes y rápidas, aunque adolece de falta de presentaciones intuitivas. Está
dirigido a profesionales, pero en este blog le hemos conseguido mucha utilidad.
Su orden FORPART será un pequeño tesoro para comprobar cálculos o ampliarlos.
Página web: https://pari.math.u-bordeaux.fr/gpwasm.html
Las particiones actúan sobre
conjuntos de sumandos. Por ejemplo, si deseo descomponer el número 20 en cuatro
sumandos primos, deberé usar el conjunto (2, 3, 5, 7, 11, 13, 17, 19). El
resultado final es que existen 6 particiones distintas.
Número: 20
Número de particiones: 6
Conjunto de particiones: 5 5 5 5,
7 5 5 3, 7 7 3 3, 11 3 3 3, 11 5 2 2, 13 3 2 2
En algunas ocasiones, el número
de particiones condicionadas proviene de operaciones sobre conjuntos de números
sometidos a alguna operación (condición previa). Por ejemplo, podemos estar
interesados en particiones en las que las partes sean todas libres de
cuadrados, o que pertenezcan a la sucesión de Fibonacci. Esta será la condición
previa en cada caso.
El manejo de cuatro números que
no tienen que guardar relación entre ellos nos lleva, en el nivel elemental de
algoritmos en el que se mueve esta serie, a usar bucles anidados: FOR I=12
T0…FOR J=12 TO…FOR K=12 TO… Esto supone una gran ineficiencia y poca
versatilidad, porque el número de bucles debería adaptarse a cada ejemplo
determinado.
Desde hace muchos años llevo
usando punteros sobre una matriz rectangular (es una imagen para
entendernos) en el que van avanzando por los distintos elementos llevando algún
tipo de recuerdo de los que ya han visitado.
Concretando el ejemplo del primer
párrafo, imaginemos que estudiamos el rango de números entre 40 y 50, y
buscamos en ellos conjuntos de cuatro números con la propiedad pedida.
Llamamos, por ejemplo, INICIO al valor mínimo (40 en este caso) y TOPE o FINAL
al último (50). Por otra parte, daremos el nombre de NUME al número de
elementos que tendrán nuestros conjuntos. Desde INICIO hasta final llamaremos
E(I) a cada valor concreto de un elemento. En la imagen que sigue sería una
columna, mientras que horizontalmente se representarían los elementos elegidos
de izquierda a derecha, que será el “movimiento” que tendrá el puntero.
Al principio cuesta un poco
entender la dinámica de este proceso, pero compensa el no tener que anidar
bucles. En mis herramientas de ayuda a la enseñanza lo he usado, entre otros,
en estas tres:
Combimaq (https://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#combimaq)
Cartesius
(https://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius)
Partlista (https://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#reprenum)
En la siguiente entrada se
desarrollarán estas ideas.

No hay comentarios:
Publicar un comentario