Rumah >pembangunan bahagian belakang >C++ >Apakah Pustaka C Terpantas untuk Menjana Pilihatur dan Gabungan?

Apakah Pustaka C Terpantas untuk Menjana Pilihatur dan Gabungan?

DDD
DDDasal
2024-12-01 06:53:10256semak imbas

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

Fungsi Perpustakaan untuk Pilihatur dan Gabungan dalam C

Soalan:

Apa yang paling menarik perpustakaan C yang kerap digunakan untuk menjana semua kombinasi dan pilih atur unsur k daripada set n elemen?

Jawapan:

Beberapa perpustakaan C menyediakan fungsi untuk mengira pilih atur dan gabungan. Walau bagaimanapun, berdasarkan analisis yang dijalankan oleh Charles Bailey, pilihan berikut menonjol:

  • Penyelesaian C: Algoritma ini, yang diperoleh daripada kertas N2639, berfungsi dengan cekap, melawati setiap kombinasi dalam 85.3531 ns.
  • Penyelesaian D: fungsi for_each_combination daripada penyelesaian yang dirujuk cemerlang dalam prestasi, melawati setiap kombinasi hanya dalam 6.62765 ns, menjadikannya lebih 12 kali lebih pantas daripada Penyelesaian C dan lebih 9000 kali lebih pantas daripada Penyelesaian B.

Nota:

Tanda aras yang disediakan telah dijalankan pada 2.8 GHz Intel Core i5 menggunakan clang -O3 dan mengukur prestasi untuk menjana pilih atur 100 elemen yang diambil 5 pada satu masa (menghasilkan lebih 75 juta jumlah gabungan).

Walaupun Penyelesaian C dan D berkongsi persamaan dengan Penyelesaian A, mereka mengelakkan isu gelung tak terhingga yang terdapat dalam Penyelesaian A, menghasilkan keputusan yang tepat. Penyelesaian D menonjol sebagai algoritma paling cekap yang diketahui oleh Charles Bailey kerana melawati semua kombinasi.

Atas ialah kandungan terperinci Apakah Pustaka C Terpantas untuk Menjana Pilihatur dan Gabungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn