Penjanaan Gabungan Cekap dalam C : Kajian Perbandingan
Kombinasi dan pilih atur ialah konsep penting dalam pelbagai domain. C menawarkan perpustakaan fungsi yang serba boleh untuk mempercepatkan penjanaan susunan ini.
Seperti yang diminta, mari kita selami kaedah perpustakaan C sedia ada untuk menjana gabungan dan pilih atur:
1. std::next_combination:
std::next_combination menyediakan cara yang cekap untuk menghitung semua kombinasi saiz k daripada set n elemen. Ia mengubah suai bekas input di tempat, menjana gabungan seterusnya mengikut susunan leksikografi.
2. std::for_each_combination:
Fungsi ini serupa dengan std::for_each, membenarkan penggunaan fungsi tertentu pada setiap gabungan. Ia memerlukan hujah n, k, bekas input dan objek fungsi.
Perbandingan Penyelesaian:
Beberapa penyelesaian telah dicadangkan untuk menangani masalah ini. Kami akan membandingkan prestasi mereka menggunakan ujian yang melawati semua gabungan vektor 100 elemen, memilih 5 elemen pada satu masa.
- Penyelesaian B (std::next_combination):
Walaupun pada mulanya memberikan hasil yang salah, ia telah dikemas kini untuk memberikan output yang tepat. Walau bagaimanapun, ia adalah algoritma yang paling perlahan.
- Penyelesaian C (N2639):
Penyelesaian ini menyerupai penyelesaian B tetapi beroperasi dengan betul. Ia berprestasi jauh lebih pantas daripada penyelesaian B tetapi masih lebih perlahan daripada yang lain.
- Penyelesaian D (std::for_each_combination):
Penyelesaian ini mempamerkan prestasi tertinggi, menunjukkan lebih 9000 kali pelaksanaan lebih cepat daripada penyelesaian B dan 12.9 kali lebih cepat daripada penyelesaian C.
Kesimpulan:
Bergantung pada skala dan keperluan permohonan anda, kaedah perpustakaan yang paling sesuai boleh berbeza-beza. Untuk masalah berskala kecil, penyelesaian B mungkin mencukupi, manakala untuk set data yang lebih besar, penyelesaian C atau, sebaik-baiknya, penyelesaian D adalah lebih sesuai. Penyelesaian D memberikan kecekapan yang tiada tandingannya, mengendalikan berbilion-bilion lawatan dengan mudah.
Atas ialah kandungan terperinci Fungsi Perpustakaan C yang manakah Menawarkan Penjanaan Gabungan Paling Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!