Benchmarking of algorithms for set partitions
Diese Arbeit überprüft Algorithmen zur Enumeration von Mengenpartitionen, liefert Näherungsformeln für deren Anzahl und empfiehlt den Algorithmus von Djokic et al. auf Basis von Benchmarking-Tests.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie haben eine Kiste mit verschiedenen Lego-Steinen. Ihre Aufgabe ist es, jede einzelne Möglichkeit herauszufinden, diese Steine zu Gruppen zusammenzufassen. Sie könnten jeden Stein in seinen eigenen kleinen Haufen legen, Sie könnten sie alle zu einem riesigen Turm stapeln oder Sie könnten sie zu verschiedenen Clustern mischen und kombinieren. In der Welt der Mathematik nennt man das eine Teilmengenpartition (Set Partition).
Dieses Papier ist im Grunde ein „Rassebericht“ für Computerprogramme, die versuchen, jede einzelne dieser möglichen Gruppierungen aufzulisten. Hier ist die Aufschlüsselung dessen, was die Autoren herausgefunden haben, unter Verwendung einfacher Analogien:
1. Das Problem: Ein rasant explodierendes Rätsel
Die Autoren erklären, dass das Auflisten von Gruppierungen für wenige Gegenstände zwar einfach klingt, die Anzahl der Möglichkeiten jedoch unglaublich schnell explodiert.
- Die Analogie: Denken Sie an ein Spiel wie Stuhlkreis, aber statt Menschen haben Sie Zahlen. Bei nur 3 Gegenständen gibt es 5 Möglichkeiten, sie zu gruppieren. Aber wenn man bei 17 Gegenständen ankommt, gibt es bereits etwa 82 Milliarden verschiedene Möglichkeiten, sie zu gruppieren.
- Die Realität: Wenn Sie mehr als 17 oder 18 Gegenstände haben, wird es für einen Computer unmöglich, jede einzelne Gruppierung in einer angemessenen Zeit aufzulisten. Für kleinere Zahlen ist es jedoch sehr nützlich, einen Computer dies tun zu lassen, insbesondere bei Optimierungsaufgaben wie dem Packen von Kisten oder der Erstellung von Schichtplänen.
2. Das Zählen der Möglichkeiten (Die „Bell-Zahlen“)
Bevor sie die Algorithmen gegeneinander antreten lassen konnten, mussten die Autoren wissen, wie viele Gruppierungen genau zu erwarten sind. Diese Zahlen werden Bell-Zahlen genannt.
- Die Herausforderung: Das exakte Berechnen der Zahl ist schwierig, daher verwenden Mathematiker Formeln, um sie abzuschätzen.
- Die Entdeckung: Die Autoren testeten mehrere komplexe mathematische Formeln. Sie fanden eine spezifische Formel (die eine spezielle mathematische Funktion namens „Lambert W-Funktion“ beinhaltet), die unglaublich genau ist. Es ist wie eine Wettervorhersage, die selbst für kleine Mengen an Gegenständen auf die Minute genau richtig ist. Sie fanden auch eine einfachere Formel, die für kleinere Gruppen gut funktioniert, aber etwas ungenau wird, wenn die Zahlen riesig werden.
3. Das Rennen: Vier Algorithmen im Wettbewerb
Der Hauptteil des Papiers ist ein „Benchmark“, was einfach ein schickes Wort für ein zeitgesteuertes Rennen ist. Die Autoren nahmen vier verschiedene Computerprogramme (Algorithmen), die darauf ausgelegt sind, diese Gruppierungen aufzulisten, und ließen sie auf verschiedenen Computern (Laptops, Desktops, Cloud-Servern) unter Verwendung verschiedener Software-Tools (Compiler) und Betriebssysteme (Windows und Linux) laufen.
Die vier Rennfahrer waren:
- Hutchinsons Algorithmus: Der „Alte“. Dies ist die klassische Methode aus vergangenen Jahrzehnten.
- Sembas Algorithmus: Ein moderner, schneller Kontender.
- Ers Algorithmus: Ein weiterer moderner, schneller Kontender.
- Djokics Algorithmus (et al.): Der neueste Herausforderer.
Die Ergebnisse:
- Der Alte (Hutchinson): Dieses Programm war signifikant langsamer als die anderen. Es ist, als würde man versuchen, einen Marathon in schweren Stiefeln zu laufen. Die Autoren sagen ausdrücklich: Benutzen Sie diesen nicht.
- Die modernen Rennfahrer (Semba, Er, Djokic): Diese waren viel schneller.
- Der Gewinner: Djokics Algorithmus holte die Goldmedaille. Er war der schnellste in allen Bereichen.
4. Der „Motor“ spielt ebenfalls eine Rolle
Die Autoren entdeckten auch, dass der „Motor“, der den Code ausführt, genauso wichtig ist wie das Auto selbst.
- Betriebssysteme: Code, der auf Linux läuft, war im Allgemeinen schneller als auf Windows.
- Compiler: Das Werkzeug, das den Code in Maschinensprache übersetzt, machte einen riesigen Unterschied. Zum Beispiel war auf einem spezifischen Algorithmus der Intel-Compiler viel schneller als der Standard-GNU-Compiler, aber bei einem anderen Algorithmus war der GNU-Compiler schneller.
- Das Fazit: Um die beste Geschwindigkeit zu erreichen, benötigen Sie sowohl den richtigen Algorithmus als auch die richtigen Software-Einstellungen.
5. Die endgültige Empfehlung
Nachdem sie tausende von Tests durchgeführt hatten, haben die Autoren ein klares Urteil für jeden, der diese Arbeit leisten muss:
- Verwenden Sie den Algorithmus von Djokic et al. Er ist der schnellste, er ist relativ kurz (leicht zu schreiben) und er ist einfach zu implementieren.
- Tipp: Stellen Sie sicher, dass Ihr Computer auf den Modus „Hohe Leistung“ eingestellt ist (Compiler-Optimierungsstufe 2 oder höher), und wenn Sie auf Linux sind, verwenden Sie den Intel-Compiler, um die besten Ergebnisse zu erzielen.
Was sie nicht abgedeckt haben
Die Autoren waren sorgfältig darauf bedacht, sich an die Grundlagen zu halten. Sie haben keine Algorithmen getestet, die versuchen, Gruppierungen mit spezifischen Grenzen zu finden (wie z. B. „Gruppen dürfen maximal 3 Elemente enthalten“), noch haben sie sich mit einem anderen Typ von Ordnungssystem namens „Gray-Codes“ beschäftigt. Diese Themen wurden für die zukünftige Forschung zurückgelassen.
Zusammenfassend: Wenn Sie einen Computer benötigen, um jede Möglichkeit aufzulisten, eine kleine Menge von Gegenständen zu gruppieren, verwenden Sie nicht die alten Methoden. Verwenden Sie den Djokic-Algorithmus, lassen Sie ihn auf Linux mit dem Intel-Compiler laufen, und Sie werden die Aufgabe im Handumdrehen erledigt haben.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.