Diberikan dua bilangan bulat dan n dalam representasi biner, apa kompleksitas komputasi bit-size x n ?
Salah satu cara untuk melakukannya adalah dengan menghitung dengan menghitung perkiraan log 2 ( x ) dengan presisi yang cukup. Tampaknya menghitung log 2 ( x ) dengan k bit precision dapat dilakukan dalam O ( M ( k ) log k ) di mana M ( adalah waktu yang dibutuhkan untuk menghitung produk dari dua bilangan bulat panjang k . Ini menghasilkan algoritma (tidak khusus sederhana) kompleksitas sekitar O ( s log 2 s ) jika s terikat pada bitsize baik x dan n (jika saya tidak membuat kesalahan).
Bisakah kita mengalahkan mana s adalah ukuran x dan n (dalam kasus di mana mereka memiliki ukuran yang sebanding)? Apakah ada algoritma sederhana untuk mendapatkan kompleksitas ini atau lebih baik?
Catatan: Saya tertarik pada kompleksitas dalam model teoretis seperti mesin Turing.
Jawaban:
[Sunting] Seperti yang disarankan, saya mengedit jawaban saya untuk memberikan rincian lebih lanjut.
Jawaban untuk pertanyaan kedua saya adalah tidak :
Dalil. Menghitung hingga presisi k setidaknya sama sulitnya dengan menghitung bit-ukuran x 2 k .log(x) k x2k
Bukti. Biarkan menunjukkan ukuran bit integer y . Pemberitahuan pertama bahwa untuk bilangan bulat non-negatif y , ukuran bit y adalah 1 + ⌊ log y ⌋ .|y| y y y 1+⌊logy⌋
Jadi, . Sekarang 2 k log ( x ) adalah log ( x ) menggeser posisi k ke kiri. Dengan demikian seseorang dapat menghitung log∣∣x2k∣∣=1+⌊2klogx⌋ 2klog(x) log(x) k ke presisi k hanya dengan mengurangi 1 ke ukuran bit x 2 k dan menggeser posisi hasil k ke kanan.log(x) k 1 x2k k
sumber