Heim >Backend-Entwicklung >C++ >Was ist die schnellste C-Bibliothek zum Generieren von Permutationen und Kombinationen?

Was ist die schnellste C-Bibliothek zum Generieren von Permutationen und Kombinationen?

DDD
DDDOriginal
2024-12-01 06:53:10311Durchsuche

What's the Fastest C   Library for Generating Permutations and Combinations?

Bibliotheksfunktion für Permutation und Kombination in C

Frage:

Was ist am meisten häufig verwendete C-Bibliothek, um alle Kombinationen und Permutationen von k Elementen aus einer Menge von n zu generieren Elemente?

Antwort:

Mehrere C-Bibliotheken bieten Funktionen zur Berechnung von Permutationen und Kombinationen. Basierend auf der von Charles Bailey durchgeführten Analyse stechen jedoch die folgenden Optionen hervor:

  • Lösung C: Dieser aus dem N2639-Artikel abgeleitete Algorithmus arbeitet effizient und besucht jede Kombination in 85.3531 ns.
  • Lösung D: Die for_each_combination Die Funktion aus der referenzierten Lösung zeichnet sich durch eine hervorragende Leistung aus und besucht jede Kombination in nur 6,62765 ns. Damit ist sie über 12-mal schneller als Lösung C und über 9000-mal schneller als Lösung B.

Hinweis:

Die bereitgestellten Benchmarks wurden auf einem 2,8 GHz Intel Core i5 mit clang -O3 durchgeführt und die Leistung gemessen zum Generieren von Permutationen von 100 Elementen, jeweils 5 Stück (was insgesamt über 75 Millionen Kombinationen ergibt).

Obwohl Lösung C und D Ähnlichkeiten mit Lösung A aufweisen, vermeiden sie das in Lösung A auftretende Endlosschleifenproblem in präzisen Ergebnissen. Lösung D ist der effizienteste Algorithmus, den Charles Bailey zum Durchsuchen aller Kombinationen kennt.

Das obige ist der detaillierte Inhalt vonWas ist die schnellste C-Bibliothek zum Generieren von Permutationen und Kombinationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn