← Nieuwste papers
🔢 mathematics

Benchmarking of algorithms for set partitions

Dit artikel beoordeelt algoritmen voor het enumereren van verzamelingenpartities, biedt benaderende formules voor hun aantallen en beveelt het algoritme van Djokic et al. aan op basis van benchmarking-tests.

Oorspronkelijke auteurs: Arnav Khinvasara, Alexander Pikovski

Gepubliceerd 2026-02-03
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Arnav Khinvasara, Alexander Pikovski

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je een doos hebt met verschillende Lego-blokjes. Jouw taak is om uit te zoeken op alle mogelijke manieren hoe je deze blokjes bij elkaar kunt groeperen. Je zou elk blokje in zijn eigen kleine stapeltje kunnen leggen, je zou ze allemaal tot één gigantische toren kunnen stapelen, of je kunt ze mengen en combineren in diverse clusters. In de wereld van de wiskunde wordt dit een verzamelingenpartitie genoemd.

Dit artikel is in feite een "raceverslag" van computerprogramma's die proberen al deze mogelijke groeperingen op te sommen. Hier is de uitslag van wat de auteurs hebben gevonden, met behulp van eenvoudige analogieën:

1. Het Probleem: Een Razendsnel Exploderende Puzzel

De auteurs leggen uit dat het opstellen van groeperingen eenvoudig lijkt voor een paar items, maar dat het aantal mogelijkheden razendsnel explodeert.

  • De Analogie: Denk aan een spelletje stoelendans, maar in plaats van mensen heb je getallen. Met slechts 3 items zijn er 5 manieren om ze te groeperen. Maar tegen de tijd dat je bij 17 items bent, zijn er ongeveer 82 miljard verschillende manieren om ze te groeperen.
  • De Realiteit: Als je meer dan 17 of 18 items hebt, wordt het voor een computer onmogelijk om elke groepering binnen een redelijke tijd op te sommen. Echter, voor kleinere aantallen is het zeer nuttig om een computer dit te laten doen, vooral voor optimalisatietaken zoals het inpakken van dozen of het plannen van diensten.

2. Het Tellen van de Mogelijkheden (De "Bell-getallen")

Voordat ze de algoritmen konden laten racen, hadden de auteurs een manier nodig om precies te weten hoeveel groeperingen ze konden verwachten. Deze getallen worden Bell-getallen genoemd.

  • De Uitdaging: Het berekenen van het exacte aantal is moeilijk, dus gebruiken wiskundigen formules om het te schatten.
  • De Ontdekking: De auteurs hebben verschillende complexe wiskundige formules getest. Ze ontdekten dat één specifieke formule (met een speciale wiskundige functie genaamd de "Lambert W-functie") ongelooflijk nauwkeurig is. Het is als het hebben van een weersvoorspelling die tot op de minuut nauwkeurig is, zelfs voor kleine aantallen items. Ze vonden ook een simpelere formule die goed werkt voor kleinere groepen, maar die een beetje slordig wordt naarmate de aantallen enorm groot worden.

3. De Race: Vier Algoritmen in Competitie

Het hoofdonderdeel van het artikel is een "benchmark", wat gewoon een chique woord is voor een tijdrit. De auteurs namen vier verschillende computerprogramma's (algoritmen) die ontworpen zijn om deze groeperingen op te sommen en lieten deze racen op verschillende computers (laptops, desktops, cloudservers) met verschillende softwaretools (compilers) en besturingssystemen (Windows en Linux).

De vier racers waren:

  1. Hutchinson's Algoritme: De "Oude Rot". Dit is de klassieke methode van decennia geleden.
  2. Semba's Algoritme: Een moderne, snelle uitdager.
  3. Er's Algoritme: Nog een moderne, snelle uitdager.
  4. Djokic et al.'s Algoritme: De nieuwste uitdager.

De Resultaten:

  • De Oude Rot (Hutchinson): Dit programma was aanzienlijk langzamer dan de anderen. Het is alsof je een marathon probeert te lopen met zware laarzen aan. De auteurs zeggen expliciet: Gebruik deze niet.
  • De Moderne Racers (Semba, Er, Djokic): Deze waren veel sneller.
  • De Winnaar: Djokic's algoritme won de gouden medaille. Het was de snelste van allemaal.

4. De "Motor" Doet Er Ook Toe

De auteurs ontdekten ook dat de "motor" die de code draait net zo belangrijk is als de auto zelf.

  • Besturingssystemen: Code die op Linux draait, was over het algemeen sneller dan op Windows.
  • Compilers: Het hulpmiddel dat de code vertaalt naar machinetaal maakte een enorm verschil. Bijvoorbeeld, op één specifiek algoritme was de Intel-compiler veel sneller dan de standaard GNU-compiler, maar voor een ander algoritme was de GNU-compiler juist sneller.
  • De Les: Om de beste snelheid te krijgen, heb je het juiste algoritme en de juiste software-instellingen nodig.

5. De Definitieve Aanbeveling

Na het uitvoeren van duizenden tests hebben de auteurs een duidelijk oordeel voor iedereen die dit werk moet verrichten:

  • Gebruik het algoritme van Djokic et al. Het is het snelst, het is relatief kort (makkelijk te schrijven) en het is eenvoudig te implementeren.
  • Tip: Zorg ervoor dat je computer op de modus "hoge prestaties" staat (compiler-optimalisatieniveau 2 of hoger) en, als je op Linux werkt, gebruik dan de Intel-compiler voor de beste resultaten.

Wat Ze Niet Hebben Behandeld

De auteurs waren voorzichtig om zich tot de basis te beperken. Ze hebben geen algoritmen getest die proberen groeperingen met specifieke limieten te vinden (zoals "groepen mogen maximaal 3 items bevatten"), noch hebben ze gekeken naar een ander type ordeningssysteem genaamd "Gray codes". Die zijn overgelaten aan toekomstig onderzoek.

Samenvattend: Als je een computer nodig hebt om elke manier op te sommen waarop een kleine verzameling items gegroepeerd kan worden, gebruik dan niet de oude methoden. Gebruik het Djokic-algoritme, draai het op Linux met de Intel-compiler, en je krijgt de klus geklaard in een oogwenk.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →