Ketika kami mencoba membuat algoritma untuk masalah baru, bagi-dan-taklukkan (menggunakan rekursi) adalah salah satu pendekatan pertama yang kami coba. Tetapi dalam beberapa kasus, pendekatan ini tampaknya tidak membuahkan hasil karena masalahnya menjadi jauh lebih rumit ketika inputnya bertambah.
Pertanyaan saya adalah: adakah masalah yang bisa kita buktikan bahwa pendekatan membagi dan menaklukkan tidak dapat membantu untuk menyelesaikannya? Pada baris-baris berikut saya mencoba membuat ini lebih formal.
Mari menjadi masalah tertentu yang input memiliki ukuran (misalnya masalah yang menerima input array nomor). Misalkan kita memiliki algoritma rekursif untuk menyelesaikan . The runtime rekursif dari algoritma yang dihitung dengan asumsi oracle yang dapat memecahkan untuk setiap dalam waktu yang konstan. Sebagai contoh:
- Runtime rekursif pencarian biner adalah , karena hanya menggunakan perbandingan dan dua panggilan rekursif.
- Elemen maksimum dalam array dapat ditemukan dalam waktu rekursif .
- Runtime rekursif dari jenis gabungan adalah , karena langkah penggabungan.
Waktu rekursif biasanya lebih kecil dari runtime yang sebenarnya, yang mencerminkan fakta bahwa algoritma rekursif lebih sederhana daripada solusi non-rekursif langsung untuk masalah yang sama.
Sekarang pertanyaan saya adalah:
Apakah ada masalah yang dapat diselesaikan dalam waktu , tetapi terbukti tidak memiliki algoritma rekursif dengan runtime rekursif asimtotik kurang dari ?
Beberapa varian spesifik dari pertanyaan ini adalah:
- Apakah ada masalah dalam yang tidak memiliki algoritma dengan runtime rekursif ? (Mungkin menyortir?)
- Apakah ada masalah dengan algoritma eksponensial yang tidak memiliki algoritma dengan runtime rekursif polinomial?
EDIT: bertentangan dengan dugaan saya, pengurutan memiliki algoritma dengan runtime rekursif P O ( . Jadi masih terbuka, apakah ada masalah di yang tidak memiliki algoritma dengan runtime rekursif .