Kompleksitas komputasi


Jawaban:


12

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 .kO~(k)nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)


3

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)=nn2f1(n)=n2nf1(n)mnmnn2log22(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)nn2n2n2m=2log2(n)m=m1

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)o1t2=o12o2=2o1iti=4i1log22noi=2ilog2(n)m

Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n .

Ketika biaya kuadrat awal sudah termasuk, kami merasa kami membutuhkan waktu paling banyak

Texp+log22n

Catatan

  • Saya menghilangkan beberapa lantai dan langit-langit dalam perhitungan, berharap itu tidak akan mempengaruhi jawaban secara material.
  • Saya sengaja menghilangkan analisis berbasis- demi batas atas yang tepat hanya untuk menjadi keras. O
  • Alasan di atas juga menjelaskan mengapa analisis saya sebelumnya cacat. The notasi yang digunakan dalam cara yang cepat-dan-lepas, dan itu mudah dihilangkan konstanta sehingga, misalnya, ajaib menjadi . OtiO(logn)
  • Perkalian dapat selalu dipercepat dengan FFT dan metode lainnya.

1
Bagaimana Anda mendapatkan kompleksitas untuk perhitungan ? O(1)n2

4
Saya akan mengatakan bahwa penggandaan dua angka bit membutuhkan waktu alih-alih waktu, Anda harus memperhitungkannya dalam biaya eksponensial biner juga. nO(logn)O(1)
Mark Dominus

2
Perhatikan bahwa hasil akhir memiliki bit. Sangat sulit untuk menghitung bit dalam waktu . n2log2nn2log2nO(logn)

Poin yang wajar, saya akan perhatikan
PKG

1
@ThomasAndrews: Itu tergantung pada model mesin dan biaya. Sudah lazim untuk mengasumsikan model RAM dengan biaya tambahan untuk penambahan.
Raphael
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.