Apa kompleksitas komputasi ?
complexity-theory
integers
number-theory
Raphael
sumber
sumber
Jawaban:
Dengan menggunakan transformasi Fourier cepat, perkalian pada bilangan bit dapat dilakukan dalam waktu (di mana tilde menandakan bahwa kita mengabaikan faktor polylogaritmik). Dengan kuadrat berulang, kita dapat menghitung dengan perkalian , dan setiap perkalian tidak melibatkan angka yang lebih besar dari , yang memiliki kira-kira bit. Jadi jumlah total waktu yang diperlukan adalah .k O~(k) nn2 O(logn) nn2 n2log2n O~(n2(logn)2)=O~(n2)
sumber
Diedit dalam menanggapi komentar Waktu untuk menghitung dapat didekomposisi menjadi waktu yang diperlukan untuk menghitung dan yang diperlukan untuk melakukan . Saya akan berasumsi bahwa mengalikan angka sedikit dengan angka sedikit membutuhkan waktu tepat dengan metode buku sekolah; tambahan, dll. adalah waktu yang konstan. Akibatnya, komputasi membutuhkan waktu.f(n)=nn2 f1(n)=n2 nf1(n) m n mn n2 log22(n)
Misalkan kita menggunakan eksponen biner untuk komputasi . Binary exponentiation melakukan dua jenis operasi dalam komputasi : mengkuadratkan produk saat ini, dan mengalikan produk saat ini dengan , sesuai dengan apakah bit saat ini dalam ekspansi biner adalah 0 atau 1. Dalam kasus terburuk , adalah kekuatan dua, sehingga eksponensial biner berulang kali mengkuadratkan produknya saat ini hingga mencapai jawaban. Perhatikan bahwa memiliki bit, sehingga jumlahnya kuadrat tersebut adalah . Ini adalah kasus yang kami analisis lebih lanjut di bawah ini.f(n) f(n) n n2 n2 n2 m′=⌈2log2(n)⌉ m=m′−1
pertama membutuhkan waktu , menghasilkan -bit produk. kedua mengambil dua angka bit dan berjalan dalam waktu , menghasilkan produk -bit. Melanjutkan, langkah ke- membutuhkan waktu dan menghasilkan -bit produk. Proses ini berhenti pada langkah ke- ; Akibatnya, butuh waktut1=log22(n) o1=2log2(n) o1 t2=o21 o2=2o1 i ti=4i−1log22n oi=2ilog2(n) m
Ketika biaya kuadrat awal sudah termasuk, kami merasa kami membutuhkan waktu paling banyak
Catatan
sumber