← Últimos artículos
🔢 mathematics

Benchmarking of algorithms for set partitions

Este artículo revisa algoritmos para enumerar particiones de conjuntos, proporciona fórmulas aproximadas para sus conteos y recomienda el algoritmo de Djokic et al. basándose en pruebas de rendimiento.

Autores originales: Arnav Khinvasara, Alexander Pikovski

Publicado 2026-02-03
📖 5 min de lectura🧠 Análisis profundo

Autores originales: Arnav Khinvasara, Alexander Pikovski

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina que tienes una caja de piezas de Lego distintas. Tu trabajo es descubrir todas las formas posibles en las que puedes agrupar estas piezas. Podrías poner cada pieza en su propio montoncito, podrías apilarlas todas en una sola torre gigante, o podrías mezclarlas y combinarlas en varios grupos. En el mundo de las matemáticas, esto se llama una partición de un conjunto.

Este documento es esencialmente un "informe de carrera" para programas informáticos que intentan enumerar cada una de estas agrupaciones posibles. Aquí está el desglose de lo que los autores descubrieron, utilizando analogías sencillas:

1. El Probleza: Un rompecabezas que explota rápidamente

Los autores explican que, aunque enumerar agrupaciones parece fácil para unos pocos elementos, el número de posibilidades explota increíblemente rápido.

  • La Analogía: Piensa en ello como un juego de sillas musicales, pero en lugar de personas, tienes números. Con solo 3 elementos, hay 5 formas de agruparlos. Pero para cuando llegas a 17 elementos, hay aproximadamente 82 mil millones de formas diferentes de agruparlos.
  • La Realidad: Si tienes más de 17 o 18 elementos, se vuelve imposible para una computadora enumerar cada una de las agrupaciones en un tiempo razonable. Sin embargo, para números más pequeños, es muy útil que una computadora haga esto, especialmente para tareas de optimización como el empaquetado de cajas o la programación de turnos.

2. Contando las Posibilidades (Los "Números de Bell")

Antes de poder poner a competir a los algoritmos, los autores necesitaban una forma de saber exactamente cuántas agrupaciones esperar. Estos números se llaman Números de Bell.

  • El Desafío: Calcular el número exacto es difícil, por lo que los matemáticos usan fórmulas para estimarlo.
  • El Descubrimiento: Los autores probaron varias fórmulas matemáticas complejas. Encontraron una fórmula específica (que involucra una función matemática especial llamada la función W de Lambert) que es increíblemente precisa. Es como tener un pronóstico del tiempo que es acertado hasta el minuto, incluso para grupos pequeños de elementos. También encontraron una fórmula más simple que funciona bien para grupos pequeños, pero se vuelve un poco imprecisa a medida que los números crecen.

3. La Carrera: Cuatro Algoritmos Compitiendo

La parte principal del documento es un "benchmark", que es solo una forma elegante de decir una carrera cronometrada. Los autores tomaron cuatro programas informáticos (algoritmos) diseñados para enumerar estas agrupaciones y los ejecutaron en varias computadoras (laptops, computadoras de escritorio, servidores en la nube) usando diferentes herramientas de software (compiladores) y sistemas operativos (Windows y Linux).

Los cuatro corredores fueron:

  1. El Algoritmo de Hutchinson: El "Veterano". Este es el método clásico de hace décadas.
  2. El Algoritmo de Semba: Un contendiente moderno y rápido.
  3. El Algoritmo de Er: Otro contendiente moderno y rápido.
  4. El Algoritmo de Djokic et al.: El nuevo desafiante.

Los Resultados:

  • El Veterano (Hutchinson): Este programa fue significativamente más lento que los otros. Es como intentar correr un maratón con botas pesadas. Los autores dicen explícitamente: No use este.
  • Los Corredores Modernos (Semba, Er, Djokic): Fueron mucho más rápidos.
  • El Ganador: El algoritmo de Djokic se llevó la medalla de oro. Fue el más rápido en todos los ámbitos.

4. El "Motor" también importa

Los autores también descubrieron que el "motor" que ejecuta el código importa tanto como el coche mismo.

  • Sistemas Operativos: El código ejecutado en Linux fue generalmente más rápido que en Windows.
  • Compiladores: La herramienta utilizada para traducir el código al lenguaje de máquina marcó una gran diferencia. Por ejemplo, en un algoritmo específico, el compilador de Intel fue mucho más rápido que el compilador estándar de GNU, pero para otro algoritmo, el compilador de GNU fue más rápido.
  • La Conclusión: Para obtener la mejor velocidad, necesitas el algoritmo adecuado y la configuración de software adecuada.

5. La Recomendación Final

Después de realizar miles de pruebas, los autores tienen un veredicto claro para cualquiera que necesite realizar este trabajo:

  • Use el algoritmo de Djokic et al. Es el más rápido, es relativamente corto (fácil de escribir) y es fácil de implementar.
  • Consejo: Asegúrese de que su computadora esté configurada en modo de "alto rendimiento" (nivel de optimización del compilador 2 o superior) y, si está en Linux, use el compilador de Intel para obtener los mejores resultados.

Lo que no cubrieron

Los autores tuvieron cuidado de ceñirse a lo básico. No probaron algoritmos que intentan encontrar agrupaciones con límites específicos (como "los grupos solo pueden tener un máximo de 3 elementos"), ni analizaron un tipo diferente de sistema de ordenamiento llamado "códigos de Gray". Eso queda para investigaciones futuras.

En resumen: Si necesita que una computadora enumere cada forma de agrupar un pequeño conjunto de elementos, no use los métodos antiguos. Use el algoritmo de Djokic, ejecútelo en Linux con el compilador de Intel y hará el trabajo en un abrir y cerrar de ojos.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →